2013-09-08 2 views
0

Я хочу создать динамический фильтр для наследования с несколькими таблицами.Фильтровать наследование нескольких таблиц в django

class Product(models.Model): 
    name ... 

class Product1(Product): 
    color ... 

class Product2(Product): 
    length ... 
    tags = ManyToManyField('tags.Tag') 

Как фильтровать, чтобы не вызывать исключение «недостающее поле»?

Product.objects.filter(***__color='11', ***__length='300', **__tags__pk__in=[1, 2]) 
+0

Я не думаю, что вы будете в состоянии сделать это. Модели Prodct не знают полей, добавленных производным классом, поэтому они будут поднимать эти ошибки. – Rohan

+0

Хорошо, но вы можете найти все уникальные подклассы в запросе? 'Product.objects.all()' -> fine '[, ]'; 'Product.objects.filter (name = '11 ')' -> fine '['; – Silent

ответ

0

Использование модели имена, как префиксы, как это:

Product.objects.filter(product1__color='11', product2__length='300', product2__tags__pk__in=[1, 2]) 
+0

Easy%) ... но Продукт или продукт1 или продукт2 ... Product.objects.filter (product1__color = '11 ', product2__length =' 300 ') -> Product2 missing field "color" -> error – Silent

+0

Можете ли вы опубликовать полная трассировка? – HankMoody