我把头发拉过来......所有其他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在评论中的回答解决了这个问题。
答案 0 :(得分:1)
你可以在这里使用ModelChoiceField
没问题。只需使用返回唯一关键字对象的适当查询集。
例如,您可以在使用postgres时使用以下查询集
...
keyword = forms.ModelChoiceField(queryset=keyword.objects.distinct('keyword'))
...