簡體   English   中英

為多對多或外鍵創建模型

[英]Creating models for many-to-many or foreign key

我有兩個模型, ItemContent 所以我想要的是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.

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