2
裏面我有一個jsonify templatetag:Django的jsonify模式單一對象的模板
from django.core.serializers import serialize
from django.db.models.query import QuerySet
from django.core.serializers.json import DjangoJSONEncoder
from django.utils import simplejson
from django.template import Library
from django.utils.safestring import mark_safe
register = Library()
def jsonify(object):
if isinstance(object, QuerySet):
return mark_safe(serialize('json', object))
return mark_safe(simplejson.dumps(object, cls=DjangoJSONEncoder))
register.filter('jsonify', jsonify)
時,我想jsonify整個查詢集這工作得很好。但是我無法在查詢集中僅對一個項目進行jsonify。
{% for t in ticket_set %}
<tr class="clickableRow tip-top" onclick="rowClick('{{ t | jsonify }}');" >
{% endfor %}
當模板標籤試圖jsonify單個項目
t
,而不是整個設置
ticket_set
我得到一個錯誤
:
<ProblemTicket: SMITH, JOHN - XXXXXXXXX; 2014-07-16 19:09:21.140000+00:00> is not JSON serializable
它看起來像它試圖jsonify結果,它回來從這樣定義的模型對象上調用__str__
:
def __str__(self):
return "%s, %s - %s; %s" % (self.person.last_name, self.person.first_name, self.serial_number, self.date_time)
我需要什麼才能讓我的jsonify方法做在單個django模型對象上正確工作而不是一組django模型對象?
我不認爲'__str__'是一個問題,因爲它的返回值是一個字符串,這當然是JSON序列化。 – janos