如何将数据从一个模型添加到另一个 django?



我正在使用泛型来表示视图

class PersonRetrieveView(generics.ListAPIView):
queryset = Person.objects.all()
serializer_class = PersonSerializer

class CommentRetrieveView(generics.RetrieveAPIView):
queryset = Comment.objects.all()
serializer_class = CommentSerializer

人员数据如下所示

{
"id": 2,
"user": {
"first_name": "Testuser",
"last_name": "TestUser1",
"id": 2
},
"name": "Test 2",
"city": "California",
"status": "NotActive",
"phone_number": "9876543222",
"age": 22,
"height": 180

}

和评论

{
"id": 1,
"comment": "test",
"person": 2

}

按 ID 链接到人员的评论。如何将评论中的数据添加到 PersonRetrieveView ? 序列化程序如下所示

class PersonSerializer(serializers.ModelSerializer):
user = UserSerializer()
# comment = CommentSerializer()
class Meta:
model = Person
fields = '__all__'

class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = '__all__'

模型看起来像

class Person(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=20)
city = models.CharField(max_length=20)
status = models.CharField(max_length=9, default='NotActive')
phone_number = models.CharField(max_length=10)
class Comment(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
comment = models.CharField(max_length=255)

您具有多对一关系,并且您没有在外键上设置related_name,因此您的注释可以通过可用于嵌套序列化程序的comment_set访问

class PersonSerializer(serializers.ModelSerializer):
user = UserSerializer()

comments = CommentSerializer(source='comment_set', many=True)

class Meta:
model = Person
fields =  [ 'user', 'city', 'comments', ...]

前提是您的Person模型与Comment模型有关系,只需在 Person 序列化程序中添加depth = 1,如下所示:

class PersonSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = Person
fields = '__all__'
depth = 1

最新更新