【发布时间】:2017-04-21 05:44:12
【问题描述】:
我有一个带有选择字段的 django 表单,我在其中动态地将一些选项加载到该字段中:
class EntryForm(forms.Form):
project = forms.ChoiceField()
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(EntryForm, self).__init__( *args, **kwargs)
CHOICES2=[]
for x in Project.objects.all() :
if user in x.users.all():
CHOICES2.append((x.name,x.name))
CHOICES1 = [(x.name,x.name) for x in Project.objects.all()]
print CHOICES2==CHOICES1 #this is True in this case
self.fields['project']=forms.ChoiceField(choices=CHOICES2)
使用 {{form.as_table}} 将表单加载到模板中。该表单不显示项目字段的下拉列表。 现在奇怪的是:如果我将最后一行更改为:
self.fields['project']=forms.ChoiceField(choices=CHOICES1)
它可以工作,尽管“==”比较的打印语句返回 True(列表故意相同 - 这只是为了测试)。我真的不知道这在技术上如何工作。
编辑 - 我的项目模型:
class Project(BaseModel):
name = models.CharField(max_length=80)
users = models.ManyToManyField(User)
【问题讨论】:
-
能否请您出示一下您的
Project模特?
标签: django