“品牌”对象是“公司”的外键,它们是ManytoMany关系,品牌对象存在字段"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__'序列化程序如下所示,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视图集如下所示
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对象来展示公司对象,但是它似乎忽略了品牌对象及其字段

感谢您的帮助,谢谢
发布于 2017-07-31 17:58:02
试一下,
Brand = BrandSerializer(source='brand_set', read_only=True, many=True)由于您已经将字段关系定义为ManyToMany,因此多个Brand对象与单个Company实例相关。通过使用反向关系,您可以在序列化程序中访问它们,并且many=True允许序列化程序处理关系中的多个对象。
https://stackoverflow.com/questions/45410024
复制相似问题