Django是否禁用小部件缓存?
因此,我有一个表单,其中定义了一个选择小部件,如下所示:Django是否禁用小部件缓存?,django,django-forms,django-widget,Django,Django Forms,Django Widget,因此,我有一个表单,其中定义了一个选择小部件,如下所示: class AdHocVoucherTemplateForm(ModelForm): class Meta: model = AdHocVoucherTemplate widgets = { 'retailer_id': Select(choices=[(r.pk, r.name) for r in Retailer.objects.all()]), } 这
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服务时,它就在那里
如何使小部件始终刷新数据库中的最新值?当我对一个小部件执行类似操作时,我看不到这种缓存行为。 它的默认小部件是Select 比如:
retailer = forms.ModelChoiceField(queryset=Retailer.objects.all())
当您的代码被计算时,choices参数被构造一次,然后您的select只有一个零售商(id,name)元组的静态列表。构建modelcooicefield
时,它引用的是一个查询集,在实际请求/显示选项列表之前,不会对该查询集进行计算