2011-10-07 167 views
-2

有一個產品目錄,產品有屬性...想過濾產品的屬性。Django - 通過參數過濾對象

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) 

我要篩選兩個或更多屬性

回答

1

你原來的問題是非常模糊的,以你想過濾的產品對象的哪些屬性。如果你想要的是涉及到具體的Attribute_Option.description值的所有產品的對象,你可以使用:

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.objects.filter(name='foo', description='bar') 

我真的不知道你試圖過濾哪些屬性,雖然。如果你在你的問題中指定了,你可能會得到一個符合你的具體用例的答案。