python - Django Serializer 仅为父类对象返回 JSON 并保留子对象相同?

标签 python django mongodb django-nonrel

我有这些模型:

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/

相关文章:

php - MongoDB 搜索 - 自动完成

mongodb - 停止在 mongodb 中耗尽碎片

python - 在 Python 中正确完成

python - 如何用 pandas 按顺序标记编码多个类别(多行)?

python - python 和 opencv 中的快速组件标记

python - 如何使用 Django REST Framework 进行身份验证

Django 和 webapp 在 GAE 上一起生活?

mongodb - Mongoose 使用 id() 方法未找到匹配文档。异步删除请求导致的错误

python - 抓取带有非结构化数据的 href 链接的表

python - 尝试删除有评论的帖子时收到 "__str__ returned non-string (type Post)"