別のオブジェクト (Category) と多対多の関係を持つオブジェクト (Book) があります。
「Category」は、サブカテゴリのレンダリングにも使用されます。カテゴリとサブカテゴリの違いは、カテゴリには「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)
複数選択として 2 つの ChoiceFields を持つフォームを表示したいと思います。1 つはカテゴリのみを表示するカテゴリ用で、もう 1 つは以前に選択したカテゴリのサブカテゴリ用です。
上で選択したカテゴリで利用可能なサブカテゴリをフィルタリングする方法がわかりません。それは可能ですか?
これまで、カテゴリ (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))