Я пытаюсь сохранить ModelForm с полем Foreignkey из другой модели. Но почему-то данные не сохраняются. Первичный ключ поля Foreignkey в моделях задач - из индекса моделей биоданных. html форма загружается со значением сеанса ['пациента'], которое должно быть значением внешнего ключа в моделях проблем при создании нового элемента. При отправке формы говорится, что новый элемент успешно добавлен, но в бэкэнде он вообще не был сохранен.
Вот код:
models.py
class Biodata(models.Model):
lastname = models.CharField(max_length=50)
firstname = models.CharField(max_length=50)
dob = models.DateField()
sex = models.CharField(max_length=10)
address = models.CharField(max_length=100,blank=True)
suburb = models.CharField(max_length=40,blank=True)
state = models.CharField(max_length=50,blank=True)
postcode = models.CharField(max_length=6,blank=True)
def __str__(self):
return self.firstname + " " + self.lastname
class Problems(models.Model):
biodata = models.ForeignKey(Biodata, on_delete = models.CASCADE, default=None)
problem = models.CharField(max_length=200)
notes = models.CharField(max_length=300)
status = models.CharField(max_length=30)
date = models.CharField(max_length=10)
def __str__(self):
return self.problem
views.py
def problem_add(request):
patient_id = request.session['patient']
form = ProblemForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.Biodata = Biodata.objects.get(id=patient_id)
instance.save
messages.success(request,('Problem added'))
return redirect('/crud/index/')
else :
messages.success(request,('There is error in the form'))
return redirect('/crud/index/')
forms.py
class ProblemForm(forms.ModelForm):
STATUS = [('S','Stable'),('U','Unstable'),('I','Inactive'),('O','Ongoing Dx.')]
problem = forms.CharField(label='',max_length=50, widget=forms.TextInput(attrs={'placeholder':'Problem'}))
notes = forms.CharField(label='', widget=forms.Textarea(attrs={'rows':4,'placeholder':'Notes'}))
status = forms.ChoiceField(label='', widget=forms.Select(attrs={'placeholder':'Status'}), choices=STATUS)
date = forms.DateField(label='', widget=forms.DateInput(format='%m/%d/%Y', attrs={'class':'datepicker','placeholder':'Date'}),
input_formats=('%m/%d/%Y', ))
class Meta :
model = Problems
fields = ('problem','notes','status','date')