我有这些型号
class Product(models.Model):
product_id = models.AutoField(primary_key=True)
product_name = models.CharField(max_length=255, null = False, unique=True)
product_title = models.CharField(max_length=255, null = True)
product_price = models.CharField(max_length = 255)
brand = models.ForeignKey(Brand, on_delete=models.SET_NULL, null=True)
product_type = models.ForeignKey(Product_type, on_delete=models.SET_NULL, null=True)
class Feature(models.Model):
feature_id = models.AutoField(primary_key=True)
feature_name = models.CharField(max_length=255, null = False)
product_type = models.ForeignKey(Product_type, on_delete=models.SET_NULL, null=True)
feature_has_value = models.CharField(choices=has_value_choice, max_length = 1, null = False)
class Product_feature(models.Model):
product_feature_id = models.AutoField(primary_key=True)
feature = models.ForeignKey(Feature, on_delete=models.SET_NULL, null=True)
product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True, related_name='product_feature')
product_feature_value = models.CharField(max_length=255, null = False)
现在,如何从产品模型中获取product_features? 我想这样查询
SELECT p.*, f.* from product p, product_feature f where f.product_id = p.product_id ORDER BY P.product_type_id
答案 0 :(得分:0)
您可以通过Django自动建立的反向关系获得Product_feature
,并以正向关系的related_name
命名。
因此,您可以使用以下方法获得QuerySet
个对象中的一个Product_feature
:
myproduct.product_feature.all()
话虽这么说,ForeignKey
字段的相关名称通常应为 plural ,因为它是一个集合。因此,我建议将您的related_name='product_feature'
重命名为related_name='product_features'
。
此外,根据PEP-8,类名是用CamelCase
写的,所以是ProductFeature
,而不是 。Product_feature