Django:forms.ChoiceField不会在新页面加载后刷新

时间:2018-10-17 10:15:55

标签: python django django-forms

在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;"     > 

发掘你

1 个答案:

答案 0 :(得分:2)

不,在首次导入该类时,在类级别定义的任何内容都只会被评估一次。

您可以使用__init__方法执行此操作,但是更好的方法是使用用于从查询集中获取选择的字段:ModelChoiceField