2013-07-20 4 views
0

У меня довольно простой вопрос, который я мог бы достичь путем динамического получения CHOICES, выполнив запрос, но мне было интересно, есть ли в Django более «родной» способ;Django; limit Подкатегория к определенной основной категории

Как это;

class Item(models.Model): 

    name = name = models.CharField(max_length = 75) 
    sub_category = models.ForeignKey('ItemSubcategory') 

Это будет пример иерархии;

  • Категория: Продукты
    • Подкатегория: Хлеб
      • товара: Tiger Bread
      • Пункт: Brown Bread
      • Пункт: Белый хлеб

Эта логика в порядке, но для некоторых других моделей я хочу использовать ее так:

class Item(models.Model): 

    name = name = models.CharField(max_length = 75) 
    sub_category = models.ForeignKey('ItemSubcategory', limit_to=('ItemCategory', 'Food')) 

Так что ограничило бы выпадающий/фильтр я хотел бы использовать, чтобы показывать только продовольственные подкатегорий, а не все остальные подкатегории, которые в соответствии с другими категориями.

ответ

1

Вы можете использовать limit_choices_to аргумент: https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to

class Item(models.Model): 

    name = name = models.CharField(max_length = 75) 
    sub_category = models.ForeignKey(
     'ItemSubcategory', 
     limit_choices_to={'ItemCategory': 'Food'} 
    ) 

Просто чтобы дать вам основную идею.

+0

Практически, это сработало; 'limit_choices_to = {'category__name': 'Food'}'. Спасибо за подсказку :) –

Смежные вопросы