簡體   English   中英

如何獲取與一對一字段相關的兩個模型中的所有對象的列表

[英]How to get list of all objects from two models related with one to one field

我有一個客戶端配置文件模型如下

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

和auth用戶模型。 我希望所有用戶對象的列表及其地址為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())我只能獲得auth用戶數據。 如何獲取與用戶數據相關的配置文件數據?

簡單的方法是單獨序列化每個模型。 除此之外,如果你真的需要為兩個模型返回單個記錄的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-framework的一部分 - http://www.django-rest-framework.org/api-guide/relations/

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM