在Django应用程序中,我编写了一个带有 forms.ChoiceField 的表单。选择应该是数据库中每隔几分钟更改一次的项目列表。重新加载页面时,我想在下拉按钮中显示当前项目列表。
我的代码运行良好,除了form.ChoiceField不会更新。要更新,我必须重新启动Django服务器。
我不知道我在想什么,你能帮我吗?它一定很小。
来自forms.py
class BookingForm(forms.ModelForm):
make_list_of_tuple = lambda list_machine : [tuple( [i,i]) for i in list_machine]
MACHINES= tuple( QA_machine_DB.objects.values_list('QAmachine',flat=True))
CHOICE_QA_MACHINES= make_list_of_tuple(MACHINES)
QAmachine= forms.ChoiceField(choices=CHOICE_QA_MACHINES)
class Meta():
model= QA_machine_DB
fields= ['QAmachine', 'owner', 'comments','status']
# http://nanvel.name/2014/03/django-change-modelform-widget
widgets = {
'owner':forms.TextInput(attrs={'placeholder':'owner'}),
'comments':forms.TextInput(attrs={'placeholder':'comments'}),
'status': forms.RadioSelect( choices=[('busy','busy'),('free','free')])}
来自模板
<form class="form-group" method="post" novalidate >
{% csrf_token %}
<table >
<td>
{{ BookingForm.QAmachine}}
</td>
<td>
{{ BookingForm.owner.errors }}
{{ BookingForm.owner}}
</td>
<td>
{{ BookingForm.comments.errors }}
{{ BookingForm.comments}}
</td>
<td>
{% for radio in BookingForm.status %}
{{ radio }}
{% endfor %}
</td>
</table>
<input type="submit" class="btn btn-success" value="submit status change" style="float: right;" >
发掘你
答案 0 :(得分:2)
不,在首次导入该类时,在类级别定义的任何内容都只会被评估一次。
您可以使用__init__
方法执行此操作,但是更好的方法是使用用于从查询集中获取选择的字段:ModelChoiceField。