我的 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__'
但是由于產品模型中有兩個欄位參考了公司模型,所以這不起作用。有沒有辦法解決這個問題?
uj5u.com熱心網友回復:
這不起作用的原因是因為您指定related_name='producer':related_name是反向關系的名稱,所以命名這個生產者沒有多大意義。您可以將關系重命名為:
class Product(models.Model):
name = models.CharField(max_length=255)
producer = models.ManyToManyField(Company, related_name='produced_products')
importer = models.ManyToManyField(Company, related_name='imported_products')
然后你可以序列化這兩個關系:
class CompanyRetrieveSerializer(serializers.ModelSerializer):
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ('name',)
produced_products = ProductSerializer(read_only=True, many=True)
imported_products = ProductSerializer(read_only=True, many=True)
class Meta:
model = Company
fields = '__all__'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420204.html
標籤:
上一篇:對于每個專案更新資料庫
