[英]Creating models for many-to-many or foreign key
我有兩個模型, 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
。 我如何實現這一目標? 難道我做錯了什么?
你必須像這樣設置你的模型:
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',)
# 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.