【问题标题】:How to Create Django Form Choice List from Query in View?如何从视图中的查询创建 Django 表单选择列表?
【发布时间】:2015-06-05 17:13:26
【问题描述】:

我有一个 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 并在我的表单中进行查询,但对于这种特定情况,我宁愿使用在我的视图中生成的列表。

【问题讨论】:

    标签: python django


    【解决方案1】:

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

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

    【讨论】:

    • Daniel,你的反馈总是有价值的,你是这里 Django/Python 社区的真正资产。感谢您一直以来的工作和帮助!
    【解决方案2】:

    尝试:

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

    当您在列表推导、此处或字典推导中进行这样的迭代时,您需要像编写 for 循环时一样思考:

    for choice in getdata:
        #do something
    

    【讨论】:

    • 感谢您的快速回复!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2018-09-19
    相关资源
    最近更新 更多