django serialize foreign key objects

半腔热情 提交于 2019-12-18 05:09:10

问题


  • Serialize django model with foreign key models
  • Serializing Foreign Key objects in Django
  • get foreign key objects in a single query - Django

There are couple of question asking for the same thing already. But they are from 2010, and it didn't help me so much. So I figure it maybe been some update to this front since 2010?

On google I found this link, which explain usage of natural keys. However my problem concerns of getting foreign objects from django.contrib.auth.models.User so it doesn't help.

My problem is as following. I want to serialize the QuerySet so I get the foreign key objects also, because I want to pass it as JSON to the client. The serializer from django.core doesn't do that. So in my case to simply the problem I had added another field to the model to contain the value I need from the foreign object. But it however introduce redundant data.

My example model it contains the username which I would like if possible remove, and instead get it by the foreign key.

    user = models.ForeignKey(User)
    username = models.CharField(max_length=100, null=False)

回答1:


One potential way around this is to construct your own dictionary object based on the returns of a queryset. You'd do something like this:

queryset = Model.objects.all()
list = [] #create list
for row in queryset: #populate list
    list.append({'title':row.title, 'body': row.body, 'name': row.user.username})
recipe_list_json = json.dumps(list) #dump list as JSON
return HttpResponse(recipe_list_json, 'application/javascript')

You need to import json for this to work.

import json



回答2:


You could use Django REST frameworks' serializers.



来源:https://stackoverflow.com/questions/10507011/django-serialize-foreign-key-objects

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!