やりたいこと
フォーム画面でタグを選択するとき、カテゴリ別にタグの表示を分けたいです。
例えば以下のコードのようにすると、"料理"というカテゴリの絞り込みしかできません。
Categoryには
- 料理
- スポーツ
- エンタメ
- 科学
などがあるとして、それぞれでフォームを作成するとするとどの様な方法があるでしょうか?
モデル側の変更はしないものとして、formで解決したいです。
Django
1class Category(models.Model): 2 name = models.CharField(max_length=20, unique=True) 3 4 5class Tag(models.Model): 6 name = models.CharField(max_length=20, unique=True) 7 category = models.ForeignKey(Category, on_delete=models.CASCADE) 8 9 10class Item(models.Model): 11 title = models.CharField(max_length=40, unique=True) 12 tag = models.ManyToManyField(FreeTag, blank=True) 13 14 15class ItemCreateForm(forms.ModelForm): 16 17 class Meta: 18 model = Item 19 fields = ('title', 'tag') 20 21 def __init__(self, *args, **kwargs): 22 super(ItemCreateForm, self).__init__(*args, **kwargs) 23 self.fields['tag'].queryset = Category.objects.filter(name="料理") 24
「fieldsに対してprefixを使う」「カテゴリ別にタグの表示を分けたい」というのは、もう少し具体的にいうとどのようなことですか? `<optgroup>` でセレクトボックスの選択肢を分けたい、ということですか?
生成したいフォームの HTML のサンプル等を具体的にご提示されると、回答がもらえやすくなると思います。
あなたの回答
tips
プレビュー