python - 如何从与一对一字段相关的两个模型中获取所有对象的列表

标签 python django django-models

我有一个客户资料模型如下

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    address = models.CharField(max_length=200)

和一个授权用户模型。我想要所有用户对象的列表及其地址到 json,如:

{
    //auth_user fields
    "username": "username",
    "first_name": "first_name",
    "last_name": "last_name", 
    "is_active": true, 
    "is_superuser": false, 
    ....
    ....
    //UserProfile fields
    address: "address"
}

通过执行 serializers.serialize(User.objects.all()) 我只能获得授权用户数据。如何获取关联的配置文件数据以及用户数据?

最佳答案

简单的方法是分别序列化每个模型。除此之外,如果您确实需要为两个模型返回单个记录的 json,您可以手动从模型构建字典列表(例如通过迭代),然后使用 json.dumps 而不是Django 序列化器:

import json
# ...

r = []
for user in User.objects.all():
    r.append({
        'username': user.username,
        # ....
        'address': user.userprofile.address
    })

 my_json = json.dumps(r)

还没有测试过这个,但我希望你明白了。

关于python - 如何从与一对一字段相关的两个模型中获取所有对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30391202/

相关文章:

python - 在单个项目中为多个应用程序使用 django 用户身份验证和 taggit

python - 将麦克风数据转换为频谱

django - 如何在 Django Rest Framework api 中隐藏 url?

django - 如何在不同的页面模板中访问 Django/Mezzanine 库内容

django - 在 views.py 中使用 Django 模型表单时出错

python - 常见的 lisp 格式指令来打印列表

django - 如何根据当前对象字段值显示不同的内联

django - 将表达式与 CHECK 约束中的常量进行比较

django - 我们如何允许用户在 Django 中为表单创建自己的字段?

Windows 7 的 AndroidViewClient 安装