所以我有一个表单,我定义了一个像这样的选择小部件:
class AdHocVoucherTemplateForm(ModelForm):
class Meta:
model = AdHocVoucherTemplate
widgets = {
'retailer_id': Select(choices=[(r.pk, r.name) for r in Retailer.objects.all()]),
}
这样我就可以与所有零售商实现一个选择输入字段。用户可以从下拉列表中选择零售商并提交表单。
我注意到的问题是,当我添加新零售商(Retailer.objects.create等)时,它不会出现在下拉列表中的表单中。它似乎是缓存的。当我重新启动运行Django的uwsgi服务时,它就在那里。
如何让窗口小部件始终刷新数据库中的最新值?
答案 0 :(得分:2)
当我使用ModelChoiceField
执行类似操作时,我没有看到此缓存行为。
它的默认小部件是Select。
类似的东西:
retailer = forms.ModelChoiceField(queryset=Retailer.objects.all())
当你的代码被评估时,那个choices参数被构造一次,然后你的select只有一个零售商(id,name)元组的静态列表。构造ModelChoiceField
时,它引用的QuerySet在实际请求/显示选项列表之前不会被评估。