0
複数のチェックボックスがあるフォームを作成しようとしています。しかし、フォームは正常にロードされますが、データは保存されません。データは管理者に入力して保存できますが、フォームには保存できません。私がis_valid()
のないビューでフォームを保存すると、formに入力したものではなく、デフォルト値でフォームが保存されます。また、チェックボックスの値はエラーを発生させます: 'antibiotics'はプライマリキーの有効な値ではありません抗生物質。私はdjangoに新しいので、私は基本が間違っている場合は言い訳をしてください。Djangoフォームのレンダリングと保存
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)