我有两个型号的病人和Ipd,病人可以有多个Ipd。我试图在IpdForm中获取耐心信息,但不知道哪里出错了
我已经试过了"qs = Ipd.objects.get(patient__id=patient_id)“,"qs = Ipd.objects.filter(patient__id=patient_id)”,但是没有什么效果。
models.py:
class Patient(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 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.ForeignKey(Rooms,on_delete=models.CASCADE, blank=False)
date_of_admission = models.DateField(("Date"),
default=datetime.date.today)
patient = models.ForeignKey(Patient, on_delete=models.CASCADE, blank=False, default = "")
def __str__(self):
return self.patient.nameforms.py:
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', 'date_of_admission']views.py:
@login_required
def ipd (request,patient_id):
formtwo = IpdForm()
qs = Ipd.objects.filter(patient__Patient_id=patient_id)
if request.method=="POST":
formtwo = IpdForm(request.POST)
if formtwo.is_valid() :
instance = formtwo.save(commit=False)
instance.save
else:
return HttpResponse(formtwo.errors)
else:
formtwo = IpdForm()
return render(request, 'newipd.html', {'a':qs,'form2':formtwo})urls.py:
url(r'^order/ipd/(?P<patient_id>\d+)/$', my_order.ipd, name='ipd'),html:
<div class="card-panel">
<span class="blue-text text-darken-2">Name : {{ab.name}}</span> <br>
<span class="blue-text text-darken-2">Phone : {{ a.phone }}</span><br>
<span class="blue-text text-darken-2">Address : {{ a.address }}</span><br>
<span class="blue-text text-darken-2">Gender : {{ a.Gender }}</span><br>
</div>发布于 2019-07-22 12:47:03
您可以简单地访问您的病人模型
Ipd.objects.filter(patient_id=patient_id)注意第一个patient_id中的单个下划线。
在访问相关模型时,您只使用双下划线,但在这种情况下,Ipd模型中直接有一个外键。
我刚才看到的编辑,您创建了自己的Patient_Id字段。我建议在没有字段Patient_id的情况下重新创建您的病人模型。Django将自己创建一个ID字段。
如果您确实希望保留您自己的字段,那么正确的访问权限应该是:
Ipd.objects.filter(patient_patient_id=patient_id)但我不建议你这么做。
您的代码中还有很多缺陷,比如将所有字段都保持在模型中,等等。请尝试参考Django文档,或者Python文档。
保持代码清晰将简化许多事情。
https://stackoverflow.com/questions/57146068
复制相似问题