У меня есть объект (книга) с отношением «многие ко многим» с другим объектом (категория).
«Категория» также используется для отображения подкатегорий. Разница между категорией и подкатегорией заключается в том, что у категории есть 'category_parent=None', а у подкатегории есть категория в качестве родителя.
--models.py--
class Category(models.Model):
name = models.CharField(max_length=150, blank=True, null=True)
category_parent = models.ForeignKey("Categoria", blank=True, null=True)
class Book(models.Model):
title = models.CharField("Title",max_length=150)
category = models.ManyToManyField("Category", blank=True, null=True)
Я хотел бы отобразить форму с двумя ChoiceFields как множественный выбор. Один для категорий, в которых должны отображаться только категории, а другой для подкатегорий предыдущей выбранной категории.
Я не знаю, как фильтровать подкатегории, доступные в выбранной выше категории. Это возможно?
До сих пор я мог фильтровать только подкатегории, исключая те, которые являются категориями (category_parent=None), но я не мог фильтровать их по уже выбранной категории.
--forms.py--
class CatSubcatForm(forms.Form):
category = forms.ModelChoiceField(Category.objects.filter(category_parent=None))
subcategory = forms.ModelChoiceField(Category.objects.exclude(category_parent = None))