Django ChoiceField返回在基于类的视图中选择有效选择错误

时间:2018-04-11 18:54:13

标签: python django forms

我把头发拉过来......所有其他SO问题都与ModelChoiceField有关,这不是我需要的。

所以我在SQL数据库中有一个包含ID和关键字的查找表。此表不是唯一的意味着可以复制关键字,但ID仍然是唯一的。这意味着我无法使用ModelChoiceField,因为我想用唯一关键字填充它,并且使用它会导致返回重复的关键字。

因此,我尝试使用ChoiceField并在我的类表单中实例化选项:

def unique_values():
    return keyword.objects.order_by('keyword').values_list('keyword', 
        'keyword').distinct()

class CustomForm(forms.Form):
    keywords = forms.ChoiceField(choices=unique_values, 
        widget=Select2MultipleWidget)

这适用于在基于类的视图中填充下拉列表表单。但是当我选择并提交表单时,我会得到结果:Select a valid choice. ['(*INSERT KEYWORD NAME*)'] is not one of the available choices.。我该如何解决这个问题?

编辑: Sytech在评论中的回答解决了这个问题。

1 个答案:

答案 0 :(得分:1)

你可以在这里使用ModelChoiceField没问题。只需使用返回唯一关键字对象的适当查询集。

例如,您可以在使用postgres时使用以下查询集

...
keyword = forms.ModelChoiceField(queryset=keyword.objects.distinct('keyword'))
...