我有两个模型,Item
和Content
。所以我想要的是Item
有很多Content
。
class Item(models.Model):
title = CharField(max_length=255)
content = models.ManyToManyField('Content', blank=True)
class Content(models.Model):
title = CharField(max_length=255)
class ItemSerializer(serializers.ModelSerializer):
content = ContentSerializer(many=True)
class Meta:
model = Item
fields = ('id', 'title', 'content',)
class ContentSerializer(serializers.ModelSerializer):
item_id = serializer.RelatedField(read_only=True)
class Meta:
model = Content
fields = ('id', 'title', 'item_id',)
在内容序列化程序中,请注意,我给了额外的字段item_id
。因为我想返回与内容相关的ID。但是我在内容列表中没有得到item_id
。我该如何实现?我在做错什么吗?
答案 0 :(得分:1)
您必须像这样设置模型:
class Item(models.Model):
title = CharField(max_length=255)
class Content(models.Model):
item = models.ForeignKey(Item,on_delete=models.CASCADE)
title = CharField(max_length=255)
然后在序列化程序中您忘记了一件事,即源代码:
class ContentSerializer(serializers.ModelSerializer):
item_id = serializer.RelatedField(source='item', read_only=True)
class Meta:
model = Content
fields = ('id', 'title', 'item_id',)
答案 1 :(得分:0)
# You need to use ForeignKey in your Item model
class Item(models.Model):
title = CharField(max_length=255)
content = models.ForeignKey(Content, on_delete=models.CASCADE, related_name='item_content')
class Content(models.Model):
title = CharField(max_length=255)