我正在尝试从另一个模型中保存带有外键字段的 ModelForm。但不知何故,数据没有被保存。问题模型中外键字段的主键来自 Biodata 模型 index.html 表单加载了 session['patient'] 值,该值应该是创建新项目时问题模型中外键的值。提交表单后,它说新项目已成功添加,但在后端,它根本没有保存。
这是代码:
模型.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
视图.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/')
表格.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')