Python 嵌套关系REST序列化程序

Python 嵌套关系REST序列化程序,python,django,python-3.x,django-rest-framework,Python,Django,Python 3.x,Django Rest Framework,型号.py class Item(models.Model): name=models.CharField(max_length=500) short_description=models.CharField(max_length=500) restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE) def __str__(self): return str(self.name

型号.py

class Item(models.Model):
    name=models.CharField(max_length=500)
    short_description=models.CharField(max_length=500)
    restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE)
    def __str__(self):
        return str(self.name)

class ItemVariation(models.Model):
    restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE)
    item=models.ForeignKey(Item,on_delete=models.CASCADE)
    price=models.IntegerField(blank=True,null=True,default=0)
    item_code=models.CharField(max_length=500)
    keyword= models.ManyToManyField(Keyword)
    image=models.ImageField(upload_to='dishes/', blank=True, null=True)

    def __str__(self):
        return str(self.id)
class ItemsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields =('name','short_description')

class ItemVariationSerializer(serializers.ModelSerializer):
    items = ItemsSerializer(many=True, read_only=True)
    class Meta:
        model = ItemVariation
        fields ='__all__'
序列化程序.py

class Item(models.Model):
    name=models.CharField(max_length=500)
    short_description=models.CharField(max_length=500)
    restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE)
    def __str__(self):
        return str(self.name)

class ItemVariation(models.Model):
    restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE)
    item=models.ForeignKey(Item,on_delete=models.CASCADE)
    price=models.IntegerField(blank=True,null=True,default=0)
    item_code=models.CharField(max_length=500)
    keyword= models.ManyToManyField(Keyword)
    image=models.ImageField(upload_to='dishes/', blank=True, null=True)

    def __str__(self):
        return str(self.id)
class ItemsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields =('name','short_description')

class ItemVariationSerializer(serializers.ModelSerializer):
    items = ItemsSerializer(many=True, read_only=True)
    class Meta:
        model = ItemVariation
        fields ='__all__'
响应:

{
                "id": 7,
                "price": 0,
                "item_code": "test",
                "image": "/media/dishes/download_3_kcE78IS.jpeg",
                "restaurant": 1,
                "item": 7,
                "keyword": [
                    3
                ]
            }

我的回答是这样的,但我的回答中没有相关的字段项。谁能告诉我哪里错了。此代码正在返回对象字段,但我还需要相关的项。

您正在序列化程序中使用
,它是您模型中的
(不带“s”。

因此,使用
源代码
参数作为

class ItemVariationSerializer(serializers.ModelSerializer):
    items = ItemsSerializer(read_only=True, source='item')
    class Meta:
        model = ItemVariation
        fields ='__all__'