基于模型选择的Django表单字段
我想提供基于模型选择的表单字段。因此,如果在我的模型中:基于模型选择的Django表单字段,django,forms,models,Django,Forms,Models,我想提供基于模型选择的表单字段。因此,如果在我的模型中: 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(mode
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)
我想创建两个表单字段,一个是
选项为YEAR\u选项
,另一个是颜色
。是否可以使用modelcoocefield
执行此操作?在myforms.py中重新定义选项似乎不是很枯燥。。否则,您将如何解决此问题
像这样的事情是我预想的,但它不起作用:
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())
从文件中()
您可以使用选择
小部件并指定选项。就你而言
color=forms.CharField(最大长度=20,小部件=forms.Select(选项=COLORS))
但是,由于您已经使用选项定义了颜色
,实际上您不需要做任何事情(除了将浏览表单
的meta设置为东西
)来实现此功能。它将默认为您想要的行为。您可以使用模型表单
from django.forms import ModelForm
class BrowseForm(ModelForm):
class Meta:
model = Thing
然后它会自动拉入您的选择