Ich versuche ein Formular mit mehreren Kontrollkästchen zu erstellen. Das Formular wird jedoch ordnungsgemäß geladen, aber die Daten werden nicht gespeichert. Ich kann Daten speichern, indem ich Daten in Admin, aber nicht in Form eingibt. Wenn ich das Formular in Ansichten ohne is_valid()
speichere, dann speichert das Formular mit den Standardwerten und nicht mit denen, die ich in das Formular eingegeben habe. Auch Checkbox-Werte erzeugen einen Fehler: "Antibiotika" ist kein gültiger Wert für einen Primärschlüssel, sagen wir, wenn ich wähle Antibiotika. Ich bin neu bei Django, bitte entschuldigt, wenn ich die Grundlagen falsch mache.Rendern und Speichern von Django-Formularen
models.py:
class Taken24h(models.Model):
CHOICES_EATEN = (
('antibiotics', 'Antibiotics'),
('steroids', 'Steroids'),
...
)
val = models.CharField(max_length=40,choices=CHOICES_EATEN,blank=True,null=True)
class BloodDonation(models.Model):
name = models.CharField(max_length=100,blank=False,null=True)
date_of_birth = models.DateField(null=True,blank=False)
nationality = models.CharField(max_length=50,blank=False,null=True)
...
taken_following_in_last_24_hrs = models.ManyToManyField(Taken24h,blank=True)
forms.py:
class BloodDonationForm(forms.ModelForm):
name = forms.CharField(widget=forms.TextInput,required=True)
date_of_birth = forms.CharField(widget=forms.DateInput,required=True)
nationality = forms.CharField()
...
taken_following_in_last_24_hrs = forms.ModelMultipleChoiceField(queryset=Taken24h.objects.all(),
widget=forms.CheckboxSelectMultiple,required=False)
)
class Meta:
model = BloodDonation
fields = '__all__'
def __init__(self,*args,**kwargs):
super(BloodDonationForm, self).__init__(*args, **kwargs)
self.fields['taken_following_in_last_24_hrs'].choices = Taken24h.CHOICES_EATEN
views.py:
def forms(request):
form = BloodDonationForm(request.POST or None)
if form.is_valid():
form.save(commit=True)
else:
print("Invalid")
data = {
'form':form,
}
return render(request,"forms.html",data)