我想为我的 Ajax 请求放置一个 Django 模型作为响应。目前我的views.py中有这个:
def get_account(request, account_id):
try:
account = Account.objects.get(pk=account_id)
success = True
error_message = None
except Account.DoesNotExist:
success = False
error_message = 'This account does not exist'
results = {
'success': success,
'error_message': error_message,
}
return HttpResponse(
json.dumps(results),
mimetype='application/json')
我想将account
模型添加到results
字典中。account.__dict__
不会这样做,因为它会引用其中的其他对象。
我找到了 de django serialize function,它完全按照我想要的方式对其进行序列化,只是它直接生成了一个 Json 字符串,所以我最终会在 Json 对象中得到一个 Json 字符串(如果你有大型模型,这对带宽不利,因为Json 字符串 get 全部逃逸)。那么我需要在 Javascript 中再次对其进行 json_decode 。
此外,django 序列化函数只接受对象列表,所以我必须创建一个只有一个对象的列表,当我反序列化它时,它会采用列表的第一个值(这不是一个超级大问题,但它添加直到堆)。
如果您可以将模型序列化为python dict,那就太好了。然后你可以随心所欲地用它做任何事情。
有人遇到过同样的问题吗?你是怎么解决的?