Python 如何用选项填充Django自定义MultipleChiceField
我有一个带有搜索框的表单,它使用jQuery来填充一个multipleechoicefield。我需要使用一个自定义的multipleechoicefield,这样我就可以控制验证,并且只检查该选项是否存在,而不是像带有queryset的modelmultipleechoicefield那样检查它是否是原始选项之一。但是,在您通过jQuery在搜索框中输入某些内容并用选项填充之前,自定义的multipleChoiceField在页面上呈现为空。我希望它以几个选项开始呈现Python 如何用选项填充Django自定义MultipleChiceField,python,django,django-forms,Python,Django,Django Forms,我有一个带有搜索框的表单,它使用jQuery来填充一个multipleechoicefield。我需要使用一个自定义的multipleechoicefield,这样我就可以控制验证,并且只检查该选项是否存在,而不是像带有queryset的modelmultipleechoicefield那样检查它是否是原始选项之一。但是,在您通过jQuery在搜索框中输入某些内容并用选项填充之前,自定义的multipleChoiceField在页面上呈现为空。我希望它以几个选项开始呈现 class Articl
class ArticleMultipleChoiceField(forms.MultipleChoiceField):
def __init__(self, *args, **kwargs):
super(ArticleMultipleChoiceField, self).__init__(*args, **kwargs)
include_articles = [article.id for article in Article.objects.order_by('-sub_date')[:5]]
self.choices = Article.objects.filter(id__in=include_articles).order_by('-sub_date')
在这种形式下,我得到的错误文章对象是不可编辑的。我还尝试将self.choices更改为self.data、self.queryset和self.initial,在所有这三种情况下,我总是得到一个空的多项选择字段
class ArticleMultipleChoiceField(forms.MultipleChoiceField):
def __init__(self, *args, **kwargs):
super(ArticleMultipleChoiceField, self).__init__(*args, **kwargs)
include_articles = [article.id for article in Article.objects.order_by('-sub_date')[:5]]
self.choices = Article.objects.filter(id__in=include_articles).order_by('-sub_date')
如何使用查询集在此处提供初始选择集
以下是它的使用形式:
class StorylineAddArticleForm(forms.Form):
articleSearchBox = forms.CharField(label="Search to narrow list below:")
include_articles = [article.id for article in Article.objects.order_by('-sub_date')[:5]]
articles = ArticleMultipleChoiceField()
def __init__(self, *args, **kwargs):
super(StorylineAddArticleForm, self).__init__(*args, **kwargs)
self.fields['articleSearchBox'].required = False
self.helper = FormHelper(self)
self.helper.layout = Layout(
Field('articleSearchBox'),
Field('articles'),
ButtonHolder(
Submit('submit', 'Add', css_class='button white')
)
)
此外,这是由脆的形式 choices不接受QuerySet作为参数,它需要一个包含两个元组的列表或元组,并具有可接受的值。请参阅此处有关选项的文档:
在这种情况下,您需要将文章queryset转换为上述格式的列表或元组