Python Django jsonify在模板中定义单个模型对象
我有一个jsonify templatetag:Python Django jsonify在模板中定义单个模型对象,python,json,django,django-models,Python,Json,Django,Django Models,我有一个jsonify templatetag: 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
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)
当我想要对整个QuerySet进行jsonify时,这很好用。但是我很难在一个查询集中只对一个项目进行jsonify
{% for t in ticket_set %}
<tr class="clickableRow tip-top" onclick="rowClick('{{ t | jsonify }}');" >
{% endfor %}
它似乎在尝试对模型对象调用\uuu str\uuu
返回的结果进行jsonification,该模型对象定义如下:
def __str__(self):
return "%s, %s - %s; %s" % (self.person.last_name, self.person.first_name, self.serial_number, self.date_time)
为了让我的jsonify方法在一个django模型对象而不是一组对象上正确工作,我需要做些什么?这将起作用,但json将是一个数组:
def jsonify(object):
if isinstance(object, QuerySet):
return mark_safe(serialize('json', object))
return mark_safe(serialize('json', [object]))
这将删除数组包装器,但它很难看:
def jsonify(object):
if isinstance(object, QuerySet):
return mark_safe(serialize('json', object))
return mark_safe(json.dumps(json.loads(serialize('json', [object])))[0])
最好让
DjangoJSONEncoder
正确地序列化对象,但我不知道如何…我不认为\uuuu str\uuuu
是个问题,因为它返回的值是一个字符串,这肯定是JSON可序列化的。
def jsonify(object):
if isinstance(object, QuerySet):
return mark_safe(serialize('json', object))
return mark_safe(json.dumps(json.loads(serialize('json', [object])))[0])