Djano反向关系序列化

我有很多对很多关系,我想序列化反向关系。 这是我的模特:

class Nutrition(models.Model):
  name = models.CharField(max_length=30,blank=False)

  def __str__(self):
    return self.name

class Company(models.Model):
   name = models.CharField(max_length=30,blank=False)
   nutritions = models.ManyToManyField(Nutrition,blank=True,related_name="companyID")

   def __str__(self):
     return self.name

这是我的序列化器:

class NutritionSerializer(serializers.ModelSerializer):
  companyID = CompanySerializer(read_only=True,many=True)

  class Meta:
    model = Nutrition
    fields=('id','name','companyID')

class CompanySerializer(serializers.ModelSerializer):
  nutritions_list = NutritionSerializer(source="nutritions",read_only=True,many=True)

  class Meta:
    model = Company
    fields = ('id','nutritions_list')

我得到一个错误:

NameError: name 'CompanySerializer' is not defined
thickice_1119 回答:Djano反向关系序列化

由于致电CompanySerializer,您收到名称错误:

class NutritionSerializer(serializers.ModelSerializer):
    companyID = CompanySerializer(read_only=True,many=True)
    ...

在定义它之前(下面几行):

class CompanySerializer(serializers.ModelSerializer):
    ...

我建议做的是为Company添加另一个不包含NutritionSerializer的串行器,因此您可以将其放在NutritionSerializerCompanySerializer的上方。这是它的外观:

class SimpleCompanySerializer(serializers.ModelSerializer):
    class Meta:
        model = Company
        fields = ('id','name')

class NutritionSerializer(serializers.ModelSerializer):
    company = SimpleCompanySerializer(read_only=True,many=True)

    class Meta:
        model = Nutrition
        fields=('id','name','company')

class CompanySerializer(serializers.ModelSerializer):
    nutritions_list = NutritionSerializer(source="nutritions",read_only=True,many=True)

    class Meta:
        model = Company
        fields = ('id','nutritions_list')
本文链接:https://www.f2er.com/3014576.html

大家都在问