选择有效的选项。x不是可用的选择之一

2024-04-25 01:47:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个问题已经在Stackoverflow上被问过十几次了,但我都看过了,他们没有解决我的问题。通常,当模型字段为整数时,它们中的大多数都与字符的选择有关,反之亦然。但这是我的处境

我在Django帮助台工作,这是一个基于Django的开源票务平台,可以在这里找到:https://github.com/django-helpdesk/django-helpdesk

我对他们做了一些改变表单.py它一直在工作,直到我最近添加了一个新队列。在

在表单.py在

class PublicTicketForm(CustomFieldMixin, forms.Form):

    queue = forms.ChoiceField(
        widget=forms.Select(attrs={'class': 'form-control'}),
        label=_('Queue'),
        required=True,
        choices=()
    )

因此,当调用此窗体时,它将在视图中填充选项

^{pr2}$

这是form.fields['queue'].choices打印的内容:

[(6L, u'Account'), (7L, u'Support'), (4L, u'Orders'), (5L, u'Products'), (8L, u'Request '), (u'', u'Other')]

因此,每当我选择一个队列并提交时,表单将不会提交,并将向我抛出此错误。在

"Not one of the available choices"

据我所知,所有的选择都是整数而不是字符。我错过了什么?我们将非常感谢所有的帮助!在


Tags: djangopy模型form表单队列queueforms
1条回答
网友
1楼 · 发布于 2024-04-25 01:47:15

我的猜测是,当表单数据被验证时,您正在设置GET请求的选项,而不是POST请求的选项。您可以通过将设置选项的代码移到表单的__init__方法中来避免此问题。本身。在

class PublicTicketForm(CustomFieldMixin, forms.Form):

    queue = forms.ChoiceField(
        widget=forms.Select(attrs={'class': 'form-control'}),
        label=_('Queue'),
        required=True,
        choices=()
    )

    def __init__(self, *args, **kwargs):
        super(PublicTicketForm, self).__init__(*args, **kwargs)
        self.fields['queue'].choices = [(q.id, q.title) for q in Queue.objects.filter(allow_public_submission=True)] + [('', 'Other')]

请注意,使用^{}可能更简单:

^{pr2}$

相关问题 更多 >