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
让序列化程序处理关系中的多个对象。
"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
让序列化程序处理关系中的多个对象。