首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django禁用小部件缓存?

Django禁用小部件缓存?
EN

Stack Overflow用户
提问于 2014-04-28 16:51:52
回答 1查看 459关注 0票数 1

因此,我有一个表单,其中定义了一个选择小部件,如下所示:

代码语言:javascript
复制
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服务时,它就在那里。

如何使小部件始终刷新数据库中的最新值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-28 17:54:25

当我对ModelChoiceField做类似的事情时,我没有看到这种缓存行为。它的默认小部件是Select。

类似于:

代码语言:javascript
复制
retailer = forms.ModelChoiceField(queryset=Retailer.objects.all())

当您的代码被计算时,选择参数只构造一次,然后您的选择只有一个零售商(id,name)元组的静态列表。在构造ModelChoiceField时,它引用的是一个QuerySet,直到实际请求/显示选项列表时才会对其进行评估。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23346792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档