Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从与一对一字段相关的两个模型中获取所有对象的列表_Python_Django_Django Models - Fatal编程技术网

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

Python 如何从与一对一字段相关的两个模型中获取所有对象的列表,python,django,django-models,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": "fir

我有一个客户端配置文件模型,如下所示

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)

我还没有对此进行测试,但我希望您能理解。

要实现嵌套对象序列化,您可以使用django rest框架的一部分-

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Track

class UserSerializer(serializers.ModelSerializer)
    userprofile = UserProfileSerializer(many=False)

    class Meta:
        model = User

serializer = UserSerializer(user)
print(serializer.data)