【发布时间】:2022-01-22 17:04:43
【问题描述】:
我的 django rest 框架项目中有以下模型。在这个项目中有产品,他们有生产商和进口商。
# models.py
class Product(models.Model):
name = models.CharField(max_length=255)
producer = models.ManyToManyField(Company, related_name='producer')
importer = models.ManyToManyField(Company, related_name='importer')
class Company(models.Model):
name = models.CharField(max_length=255)
我需要创建一个 API 来检索“公司”模型的一个实例,并为我提供他们生产的产品的列表和他们进口的产品的另一个列表
现在我知道只使用一个多对多字段来执行此操作,我可以执行以下操作:
class CompanyRetrieveSerializer(serializers.ModelSerializer):
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ('name',)
product_set = ProductSerializer(read_only=True, many=True,)
class Meta:
model = Company
fields = '__all__'
但由于产品模型中有两个字段引用了公司模型,因此这不起作用。有没有办法解决这个问题?
【问题讨论】:
-
输出是否应该包含 两个 列表(一个用于生产项目,一个用于进口项目),或者一个列表是“联合 ”的两个。
-
最好是两个单独的列表。
标签: django django-models django-rest-framework django-serializer