Megpróbálok megjeleníteni egy űrlapot (többszörös jelölőnégyzettel), és az adatokat adatbázisba menteni. De van valami probléma.
Íme a modellem:
class Preference(models.Model):
CLASS_CHOICES = [('1', '1'), ('2', '2'), ('3', '3')]
BOARD_CHOICES = [('C', 'CBSE'), ('I', 'ICSE'), ('S', 'State Board')]
SUBJECT_CHOICES = [('H', 'HINDI'), ('M', 'MATH'), ('E', 'ENGLISH')]
class = models.CharField(max_length=2, choices=CLASS_CHOICES, default='1', blank=False)
board = models.CharField(max_length=2, choices=BOARD_CHOICES, default='C', blank=False)
subject = models.CharField(max_length=2, choices=SUBJECT_CHOICES, default='M', blank=False)
Az én űrlapom:
class PreferenceForm(forms.ModelForm):
class Meta:
model = Preference
fields = ['class', 'board', 'subject']
widgets = {
'board': forms.RadioSelect(),
'subject': forms.CheckboxSelectMultiple()
}
Az én nézetem:
def pref(request):
form = PreferenceForm(request.POST or None)
if form.is_valid():
form.save()
return render(request, 'website/thanks.html')
else:
print(form.errors)
return render(request, 'website/pref.html', {'form': form})
Megjeleníti az űrlapot jelölőnégyzettel, de nem tudom elmenteni ezeket az adatokat az adatbázisba, még akkor sem, ha egyetlen lehetőséget választok.
Hiba jelenik meg: - `
<li>Subject<ul class="errorlist"><li>Select a valid choice. ['H', 'M'] is not one of the available choices.</li></ul></li>
Minden segítséget/javaslatot szívesen fogadunk, köszönöm.
Subject
objektumokat, és természetesen bele kell tenni egy__str__
metódust, hogy a nevet írja ki a csúnya'Subject object'
helyett. 30.04.2017H
vagyM
értéket is megadhat, így több azonos nevű érték lesz), módosíthatja aname
definícióját a következőre:name = models.CharField(max_length=2, unique=True, choices=SUBJECT_CHOICES, default=MATH)
. Persze utána futtass migrációt ;) 30.04.2017