我正在创建一个使用multipleechoicefield的表单。此字段的值来自另一个模型。这个方法工作得很好,但是,我注意到(在生产服务器上)当我向有问题的模型(NoticeType)添加新项时,表单不会动态更新。我必须重新启动服务器,新的项目才会出现在我的multipleechoicefield上。在
对NoticeType模型的任何更改(编辑项或创建新项)都不会传播到表单。重新启动生产服务器后,将显示更新。在
你知道为什么会这样吗?表格的相关部分如下。谢谢。在
from django import forms
from django.contrib.auth.models import User
from notification.models import NoticeType
class EditUserProfileForm(forms.Form):
CHOICES = []
for notice in NoticeType.objects.all():
CHOICES.append( (notice.label,notice.display) )
notifications = forms.MultipleChoiceField(
label="Email Notifications",
required=False,
choices=( CHOICES ),
widget=forms.CheckboxSelectMultiple,)
我的直觉是类定义只在加载时被处理一次,而不是每次实例化。尝试将CHOICES计算添加到init方法,如下所示:
尽管mherren认为可以通过在
__init__
方法中定义您的选择来解决这个问题是正确的,但是有一种更简单的方法:使用专为获取查询集而设计的ModelMultipleChoiceField
并动态更新。在相关问题 更多 >
编程相关推荐