有产品目录,产品具有属性...想要按属性过滤产品。
class Product(models.Model):
name = models.CharField(verbose_name="Название",max_length=255)
description = models.TextField(verbose_name="Описание")
category = models.ManyToManyField(Category,verbose_name=("Категория"))
class Product_Attribute(models.Model):
product = models.ForeignKey(Product)
option = models.ForeignKey(Attribute_Option)
value = models.CharField(verbose_name=("Value"), max_length=255)
class Attribute_Option(models.Model):
description = models.CharField(verbose_name=("Description"), max_length=100)
name = models.SlugField(verbose_name=("Attribute name"), max_length=100)
我想过滤两个或更多属性
答案 0 :(得分:1)
您希望过滤Product对象的属性的原始问题非常模糊。如果您想要与特定Attribute_Option.description值相关的所有Product对象,可以使用:
attribute_options = Attribute_Option.objects.get(description='foo')
product_attributes = Product_Attribute.objects.select_related('Product').filter(option__in=attribute_options)
results = [p.product for p in product_attributes]
如果您只想要所有具有特定名称和特定描述的Product对象,则可以使用:
Product.objects.filter(name='foo', description='bar')
我真的不知道您尝试过滤哪些属性。如果您在问题中指定了该问题,则可能会得到与您的特定用例相匹配的答案。