Django表单返回无效

2024-10-03 17:21:37 发布

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

我正在尝试实现一个表单,其中有一个字段的复选框选项,用户可以为表单中的特定字段选择多个复选框,并且所有选中的值都应该在POST请求中发送。在

但是views.py是说当我试图提交表单时,表单是无效的。它无效的原因是
Select a valid choice. ['top', 'mid'] is not one of the available choices.

当我只选中一个复选框时,也会出现类似的错误。在

这是我的部分models.py

from django.db import models
LEAGUE_ROLES = (
    ('top','Top'),
    ('mid','Mid'),
    ('jungle','Jungle'),
    ('bottom','Bottom/ADC'),
    ('support','Support'),
)
class CreatePosting(models.Model)
    createPostingOpenRoles = models.CharField(max_length = 10, choices=LEAGUE_ROLES, default=None)
    def __str__(self):   # __unicode__ on Python 2
        return self.title

这是我的部分forms.py

^{pr2}$

这是我的部分views.py

def createposting(request):
    UserTeamPostingCreateForm = TeamPostingCreateForm()
    if request.method == "POST":
        UserTeamPostingCreateForm = TeamPostingCreateForm(request.POST)
        if UserTeamPostingCreateForm.is_valid():
            logger.error("valid form")
        else:
            #print form error
            logger.error(UserTeamPostingCreateForm.errors)
    variables = { 'form': UserTeamPostingCreateForm }
    return render(request, 'createposting.html', variables)

在我的模板中,我有一个表单字段

{{ form.createPostingOpenRoles }}

如果你需要更多代码,请告诉我。 我试着研究解决办法,但没有任何效果。在

谢谢你的帮助

更新

所以我打印出views.py将呈现给模板的选项

    logger.error(UserTeamPostingCreateForm.fields['createPostingOpenRoles'].choices)

我得到了这个输出

[('top', 'Top'), ('mid', 'Mid'), ('jungle', 'Jungle'), ('bottom', 'Bottom/ADC'), ('support', 'Support')]

当我提交带有“顶部”和“中间”复选框的表格时,我会发现这是一个无效的表格,因为:

Select a valid choice. ['top', 'mid'] is not one of the available choices.

Tags: pyform表单ismodelsrequesttoperror
1条回答
网友
1楼 · 发布于 2024-10-03 17:21:37

发生这种情况是因为您试图将一个包含两个文本值的列表传递到CharField。对于CharField,列表是一个无效的选择。如果您希望允许多个选项,请考虑使用JSONField(仅限postgres)或^{}。在

多回波场的定义类似于

createPostingOpenRoles = models.MultipleChoiceField(choices=LEAGUE_ROLES)

multipleechoicefield的“empty”值是空列表([]

相关问题 更多 >