我想要的是選擇要保存並提交給數據庫的多選擇的選擇器選擇一個有效的選項。[<selection>]不是可用選項之一。錯誤
但是,我在每個問題上都得到了這個錯誤。
我的models.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
,因爲我們儲存多個項目,並使用同一model('self')
。
modelform.py
class preferencesForm(ModelForm):
"""def __init__(self, *args, **kwargs):
super(preferencesForm, self).__init__(*args, **kwargs)"""
class Meta:
model = preferences
fields = ['cuisine', 'cuisine_extra', 'vegeterian', 'lunch', 'dinner', 'Friday', 'weekend']
widgets = {
'cuisine':forms.widgets.CheckboxSelectMultiple,
'lunch':forms.widgets.CheckboxSelectMultiple,
'dinner':forms.widgets.CheckboxSelectMultiple,
'Friday':forms.widgets.CheckboxSelectMultiple,
'weekend':forms.widgets.CheckboxSelectMultiple,
}
form = preferencesForm()
我試着用__init__
這樣做,是沒有幫助。此時我迷路了。
views.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})
views.py應該罰款,但以防萬一。
錯誤看起來像這樣
選擇一個有效的選擇。 [u'3',u'9']不是可用的 選項之一。
(選擇取決於所選的選項的數目,但這個想法是一樣的) 我也試着改變整數爲字符串,沒有幫助任。 也試過[u'1']
等,也沒有工作。
我知道我可以使用多選字段庫,但這對我的數據庫不利,因爲存儲多個實例並不是一個好主意。 我看到有相當多的類似錯誤,但他們都沒有幫助我:/ 將非常感謝您的幫助!謝謝!
我們真的需要*所有代碼*來調試嗎? –
@ Ev.Kounis我剛剛發佈了這個以防萬一,因爲我無法弄清楚到底是什麼導致問題 – pyjka
是的,但是你認爲有多少人會願意通過它? –