如何从查询中创建Django表单选择列表?

时间:2015-06-05 17:13:27

标签: python django

我有一个Django表单,我希望在我的视图中使用查询中的动态选择列表。

这是我正在尝试做的事情:

views.py

 getdata = MyModel.objects.filter(filter=filter)

 form = MyForm(request.POST or None,
              mylist=[( (getdata.id), (getdata.name) ) for choice in getdata]

当我运行时,我收到'QuerySet' object has no attribute 'id'错误。

我知道我可以使用ModelChoiceField并以我的形式进行查询但是对于这个特定情况,我宁愿使用我视图中生成的列表。

2 个答案:

答案 0 :(得分:2)

choice是每次迭代中的单个项目,而不是getdata

mylist=[( (choice.id), (choice.name) ) for choice in getdata]

答案 1 :(得分:1)

尝试:

form = MyForm(request.POST or None,
          mylist=[( (choice.id), (choice.name) ) for choice in getdata]

当你在列表理解,这里或字典理解中进行迭代时,你需要以与编写for循环时相同的方式思考:

for choice in getdata:
    #do something