我尝试将一个模型对象与表单中的其他模型链接,但以无效表单告终
Models.py:患者类别(models.Model):
name = models.CharField(max_length=200);
phone = models.CharField(max_length=20);
address = models.TextField();
Patient_id = models.AutoField(primary_key=True);
Gender= models.CharField(choices=GENDER,max_length=10)
consultant = models.CharField(choices=CONSULTANT,max_length=20)
def __str__(self):
return self.name
class Rooms(models.Model):
name = models.CharField(max_length=200)
room_num = models.IntegerField()
def __str__(self):
return str(self.name)
class Ipd(models.Model):
reason_admission = models.CharField(max_length=200, blank=False)
presenting_complaints = models.CharField(max_length=200,)
ipd_id = models.AutoField(primary_key=True)
rooms = models.OneToOneField(Rooms,on_delete=models.CASCADE,
blank=False)
investigation = models.CharField(max_length=300)
patient = models.ForeignKey(Patient,on_delete=models.CASCADE,null =
False)Forms.py:
from .models import Patient,Ipd
class PatientForm(forms.ModelForm):
class Meta:
model = Patient
fields =
['name','phone','address','Patient_id','consultant','Gender']
class IpdForm(ModelForm):
class Meta:
model = Ipd
fields = ['patient','reason_admission','presenting_complaints',
'rooms','investigation']views.py:
@login_required
def ipd (request,patient_id):
patient = Patient.objects.get(pk=patient_id)
if request.POST:
data = dict(request.POST)
data['patient']=Patient.Patient_id
formtwo = IpdForm(request.POST)
if formtwo.is_valid():
if formtwo.save():
return redirect('/', messages.success(request, 'Patient is
successfully updated.', 'alert-success'))
else:
return redirect('/', messages.error(request, 'Data is not
saved', 'alert-danger'))
else:
return redirect('/', messages.error(request, 'Form is not
valid', 'alert-danger'))
else:
formtwo = IpdForm(request.POST)
return render(request, 'newipd.html', {'form2':formtwo
,'form':patient})我有用于创建患者的患者模型,以及在入院前从患者那里获取额外信息的Ipd模型。因此,我正在尝试将Ipd模型与患者链接,以创建新的Ipd列表
发布于 2019-07-16 11:57:29
首先,这可能不是错误,但它是一个普遍接受的实践:而不是
if request.POST:做
if request.method == "POST":此外,在重定向中,您将消息放入参数中。我对此不太确定,但我想你也许能做到
messages.success ...
return redirect("/")因为我不认为你的重定向会起作用。我强烈地怀疑,当你这样做的时候,错误是在其他错误之后
formtwo = IpdForm(request.POST)因为request.POST已经显示为None,所以请执行以下操作
formtwo = IpdForm()查看django form docs。此外,我非常确定您不能在表单中放置外键(在本例中是IpdForm和patient类)。相反,请从表单域中删除“patient”,然后执行以下操作
if formtwo.isvalid():
formtwo.user_id = request.user.id我希望这至少会有一点帮助,你可以解决你的问题。
https://stackoverflow.com/questions/57049256
复制相似问题