gpt4 book ai didi

python - Django Rest Framework 外键嵌套

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:07 24 4
gpt4 key购买 nike

我试图将我的用户表嵌套在我的关系表中。所以不是这个:

[
{
"user": 1,
"related_user": 2,
"relationship": "followed_by"
}
]

我想得到这个:

[
{
"user": {
"username": "user1",
"name": "User 1",
"email": "bla",
"phone": "bla",
"date_joined": "2017-11-01T21:34:13.101256Z"
},
"related_user": {
"username": "user2",
"name": "User 2",
"email": "bla",
"phone": "bla",
"date_joined": "2017-11-01T21:34:13.101256Z"
},
"relationship": "followed_by"
}
]

我查阅了教程并尝试添加 serializers.RelatedField 、 UserSerializer(many=true, read-only=true) 等,但没有任何效果

模型.py

class User(models.Model):
username = models.CharField(max_length=255)
name = models.CharField(max_length=255)
email = models.CharField(max_length=255)
phone = models.CharField(max_length=255)
date_joined = models.DateTimeField(auto_now_add=True, blank=True)

def __str__(self):
return str(self.pk) + ", " + self.username


RELATIONSHIP_CHOICE = [
("follows", "follows"),
("followed_by", "followed_by"),
("none", "none"),
]

class Relationship(models.Model):
user = models.ForeignKey(User, related_name="primary_user", null=True)
related_user = models.ForeignKey(User, related_name="related_user", null=True)
relationship = models.CharField(max_length=40, choices=RELATIONSHIP_CHOICE, default=RELATIONSHIP_CHOICE[0])

序列化器.py

from rest_framework import serializers
from . import models

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = models.User
fields = (
'username',
'name',
'email',
'phone',
'date_joined',
)


class RelationshipSerializer(serializers.ModelSerializer):
related_user = UserSerializer(many=True)

class Meta:
model = models.Relationship
fields = (
'user',
'related_user',
'relationship',
'related_user'
)

我尝试将相关用户添加到我的序列化程序,但没有成功。我收到一个错误:“用户”对象不可迭代

感谢任何帮助。

最佳答案

class RelationshipSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)
related_user = UserSerializer(read_only=True)

class Meta:
model = models.Relationship
fields = (
'user',
'related_user',
'relationship'
)

user = UserSerializer(read_only=True, many=True) 用于 manytomany 字段,user = UserSerializer(read_only=True) 用于 ForeignKey 字段。

关于python - Django Rest Framework 外键嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47066083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com