请选择有效的选项。[<selection>]不是可用的选项之一。E

2024-04-19 04:53:32 发布

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

我想要的是多选一个选择保存并提交给数据库的用户

但是我在每个问题上都有这个错误。在

我的模型.py

class preferences(models.Model):
    cuisine = (
        (1,u'Italian'),
        (2,u'American'),
        (3,u'French'),
        (4,u'Japanese'),
        (5,u'Russian'),
        (6,u'Chinese'),
        (7,u'Mexican'),
        (8,u'Indian'),
        (9,u'Middle Eastern'),
        (10,u'Thai'),
        (11,u'Spanish')
    )
    vegeterian = (
        (1,u'Yes'),
        (2,u'No'),
        (3,u'I appreciate both')
    )
    lunch = (
        (1,u'Cafe'),
        (2,u'Restaurant'),
        (3,u'Fast Food'),
        (4,u'Takeaway'),
        (5,u'Grocery/Lunch Box')
    )
    dinner = (
        (1,u'Inexpensive Restaurant'),
        (2,u'Fine Dining'),
        (3,u'Takeaway'),
        (4,u'Fast Food'),
        (5,u'Delivery'),
        (6,u'Cooking at home'),
        (7,u'Cheeky Bar') #Make it with a hint that having a dinner w/ a cheeky pint

    )
    Friday = (
        (1,u'Bar'),
        (2,u'Night club'),
        (3,u'Karaoke'),
        (4,u'Netflix & chill'),
        (5,u'Video games'),
        (6,u'Cinema'),
        (7,u'Theater'),
        (8,u'Restaurant'),
    )

    weekend = (
        (1,u'Hiking'),
        (2,u'Sport activities'),
        (3,u'Attending sport events'),
        (4,u'Music events'),
        (5,u'Art/Science exhibitions'),
        (6,u'Chilling at the park'),
        (7,u'Video games'),
        (8,u'Cinema'),
        (9,u'Theater'),
        (10,u'Chilling at home')
    )

    UserID = models.ForeignKey(User,related_name='User', null=True,default='')
    cuisine = models.ManyToManyField('self',choices=cuisine, max_length=20,blank=False,default='')
    cuisine_extra = models.CharField(max_length=25)
    vegeterian = models.CharField(max_length=15,choices=vegeterian)
    lunch = models.ManyToManyField('self',choices=lunch,max_length=20,blank=False,default='')
    dinner = models.ManyToManyField('self',choices=dinner,max_length=20,blank=False,default='')
    Friday = models.ManyToManyField('self',choices=Friday,max_length=20,blank=False,default='')
    weekend = models.ManyToManyField('self',choices=weekend,max_length=40,blank=False,default='')

这里我使用M2Mfield,因为我们要存储多个项目,并在同一个^{上使用它。在

模型窗体.py

^{pr2}$

我试着用__init__来做,但也没用。在这一点上我迷路了。在

视图.py

def display_form(request):
    if not request.user.is_authenticated:
        return redirect(settings.LOGIN_URL)
    if request.method == 'POST':
        form = preferencesForm(request.POST)
        if form.is_valid():
            form.UserID = request.user
            form.save()
            return HttpResponseRedirect('/')
    else:
        form = preferencesForm()
    return render(request,'display.html',{'form':form})

视图.py应该可以,但只是以防万一。在

错误如下所示

Select a valid choice. [u'3', u'9'] is not one of the available choices.

(选择取决于所选选项的数量,但想法相同) 我也试着把整数改成字符串,也没用。 也试过[u'1']等,也没用。在

我知道我可以使用multiselectfield库,但这对我的数据库是不利的,因为存储多个实例不是一个好主意。 我看到有不少类似的错误,但没有一个对我有帮助:/ 非常感谢您的帮助!谢谢!在

错误error


Tags: pyselfformfalsedefaultmodelsrequest错误
1条回答
网友
1楼 · 发布于 2024-04-19 04:53:32

你的领域毫无意义。多对多字段是模型之间的关系,其中每一方可以有多个项。它不是选项列表中的一组项。在

您应该使用commasepartedintegerfield和^{}来验证这些项是否为整数。在

相关问题 更多 >