我有这些模型:
class Projects(models.Model):
projectName =models.CharField(max_length = 100,unique=True,db_index=True)
projectManager = EmbeddedModelField('Users')
class Teams(models.Model):
teamType = models.CharField(max_length =100)
teamLeader = EmbeddedModelField('Users')
teamProject = EmbeddedModelField('Projects')
class Users(models.Model):
name = models.CharField(max_length = 100,unique=True)
designation = models.CharField(max_length =100 )
teams = ListField(EmbeddedModelField('Teams'))
我需要从我的 View 中为所有与用户和团队有进一步关系的项目对象返回 JSON。我的 views.py 有这段代码
from django.core import serializers
data = serializers.serialize('json', Projects.objects.all())
此输出 JSON 仅为项目对象,不会像这样为 USer 对象返回 JSON
[{"pk": "4eb3b7d0e814520db4000000", "model": "RESTAPI.projects", "fields": {"projectName": "HELLO", "projectManager": "Users object"}}]
如何将 User 对象也转换为 JSON?
最佳答案
我前段时间遇到过这个问题,I created a snippet to help me out :
def get_values(instance, go_into={}, exclude=(), extra=()):
"""
Transforms a django model instance into an object that can be used for
serialization. Also transforms datetimes into timestamps.
@param instance(django.db.models.Model) - the model in question
@param go_into - relations with other models that need expanding
@param exclude - fields that will be ignored
@param extra - additional functions/properties which are not fields
Usage:
get_values(MyModel.objects.get(pk=187),
{'user': {'go_into': ('clan',),
'exclude': ('crest_blob',),
'extra': ('get_crest_path',)}},
('image'))
"""
所以你可以使用这样的东西:
simplejson.dumps(get_values(Projects.objects.all(),
go_into={'projectManager': {'go_into': 'teams'}}))
免责声明:我为自己的目的制作了脚本;它可能并不完美,可能需要进一步修改以满足您自己的需求。
关于python - Django Serializer 仅为父类对象返回 JSON 并保留子对象相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8018419/