我有2个这样的模型:
class Company(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=200)
class Meta:
verbose_name = 'Company'
另一个模型:
class Product(models.Model):
name = models.CharField(max_length=200)
company = models.ForeignKey(to=Company, on_delete=models.PROTECT)
class Meta:
verbose_name = 'Product'
现在,我需要在Company模型中创建一个属性,该属性可以返回所有产品对象的列表,例如
@property
def products (self):
products = []
for i in Product.objects().filter(company=self.id):
products.append(i)
return products
当我在CompanySerializer字段中提到产品(属性)时,它给我一个错误,即它无法返回对象列表。
任何人都可以解决我的问题,并告诉我代码有什么问题吗?
答案 0 :(得分:1)
Django会动态向模型添加属性,这些属性会返回包含所有相关对象的查询集。默认情况下,该属性命名为<model name lowercase>_set
company.product_set.all()
可以通过将related_name
传递到ForeignKey
class Product(models.Model):
company = models.ForeignKey(to=Company, on_delete=models.PROTECT, related_name='products')
company.products.all()
答案 1 :(得分:1)
我认为,如果需要API中的结果列表,则应使用model_to_dict函数。喜欢,
remove-item filesystem::\\uncpath\folder
然后,您可以在公司序列化器类字段中包含此“产品”属性。希望这会有所帮助!