Python Django jsonify在模板中定义单个模型对象

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

我有一个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 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])