У меня есть объект (Книга), имеющий отношение «многие ко многим» с другим объектом (Категория).
«Категория» также используется для отображения подкатегорий.Различие между категорией и подкатегорией состоит в том, что у категории есть '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))