モデルの選択に基づいてフォーム フィールドを提供したいと考えています。したがって、私のモデルの場合:
COLORS = (
('BLA', 'Black'),
('WHI', 'White'),
('RED', 'Red'),
('BLU', 'Blue'),
)
YEAR_CHOICES = []
for r in range(1980, (datetime.datetime.now().year+1)):
YEAR_CHOICES.append((r,r))
class Thing(models.Model):
stuff = models.ForeignKey(Stuff)
color = models.CharField(max_length=3, choices=COLORS)
year = models.IntegerField(('year'), max_length=4, choices=YEAR_CHOICES, default=datetime.datetime.now().year)
2 つのフォーム フィールドを作成したいと考えています。1 つは<select>
オプションがYEAR_CHOICES
で、もう 1 つはオプションがCOLORS
です。を使用してこれを行うことができますModelChoiceField
か? 私の選択肢を再定義することは、forms.py
あまり DRY ではないようです. そうでなければ、この問題をどのように解決しますか?
このようなものは私が想像していたものですが、うまくいきません:
class BrowseForm(forms.Form):
stuff = forms.ModelChoiceField(queryset=Stuff.objects.all())
color = forms.ModelChoiceField(queryset=Thing.color.choices())
year = forms.ModelChoiceField(queryset=Thing.year.choices())