DjangoRestfulApiManytoMany模型显示异物

Django Restful Api of ManytoMany models to show the foreign objects

"Brand"对象是"company"的外键,是多对多关系,Brand对象存在"company_Group"

字段

型号如下:

class Brand(models.Model):
      Company_Group = models.ManyToManyField(Company)
      Brand_Group = models.CharField(u'Brand Group',max_length=255, default="")
      Pref_Brand_Name_Flg = models.CharField(u'Preferred Name Flag',max_length=255, default="")
      Pref_Brand_Name = models.CharField(u'Preferred Name',max_length=255, default="")
      PrimaryContact = models.ForeignKey(UserRole, null=True, blank=True) 



class Company(models.Model):
      Pref_Company_Name_Flg = models.CharField(u'Preferred Name Flag',max_length=255, default="")
      Pref_Company_Name = models.CharField(u'Preferred Name',max_length=255, default="")
      Company_Type = models.CharField(u'Company Type',max_length=255, default="")

序列化器

class BrandSerializer(serializers.ModelSerializer):
    class Meta:
        model = Brand
        fields = '__all__'

Serializer如下,data_export_setting.Company_form_stand字段为

class CompanySerializer(serializers.HyperlinkedModelSerializer):
    Brand = BrandSerializer(source='brand', read_only=True)
    class Meta:
        model = Company
        Company_form_stand=['id', 'Brand', 'Company_Type','Company_Name','company_Name_SC']
        fields = data_export_setting.Company_form_stand
        depth = 2

    def create(self, validated_data):
        return Company.objects.create(**validated_data)

    def update(self, instance, validated_data):
        instance.__dict__.update(**validated_data)
        instance.save()
        return instance

viewset如下

class BrandViewSet(viewsets.ModelViewSet):
     queryset = Brand.objects.all()
     serializer_class = BrandSerializer
     model = Brand

     def get_serializer(self, *args, **kwargs):
         if 'data' in kwargs:
             data = kwargs['data']
             if isinstance(data, list):
                 kwargs['many'] = True
    return super(BrandViewSet, self).get_serializer(*args, **kwargs)


class CompanyViewSet(viewsets.ModelViewSet):
      queryset = Company.objects.all()
      serializer_class = CompanySerializer

我想用品牌对象显示公司对象,但是,它似乎忽略了品牌对象及其字段

感谢任何帮助,谢谢

试试,

Brand = BrandSerializer(source='brand_set', read_only=True, many=True)

由于您已将字段关系定义为 ManyToMany,多个 Brand 对象与单个 Company 实例相关。通过使用反向关系,您可以在序列化程序中访问它们,并且 many=True 让序列化程序处理关系中的多个对象。