django中显示外键对象时出现问题
我有两个模型病人和Ipd,病人可以有多个Ipd。我试图在IpdForm中获取患者信息,但不知道哪里出错了 我已经尝试过“qs=Ipd.objects.get(patient\uu id=patient\u id)”,“qs=Ipd.objects.filter(patient\uu id=patient\u id)”,但没有任何效果 models.py:django中显示外键对象时出现问题,django,django-models,django-views,Django,Django Models,Django Views,我有两个模型病人和Ipd,病人可以有多个Ipd。我试图在IpdForm中获取患者信息,但不知道哪里出错了 我已经尝试过“qs=Ipd.objects.get(patient\uu id=patient\u id)”,“qs=Ipd.objects.filter(patient\uu id=patient\u id)”,但没有任何效果 models.py: class患者(models.Model): name=models.CharField(最大长度=200); phone=models.Ch
class患者(models.Model):
name=models.CharField(最大长度=200);
phone=models.CharField(最大长度=20);
地址=models.TextField();
患者id=models.AutoField(主键=True);
性别=型号.CharField(选项=性别,最大长度=10)
consultant=models.CharField(选项=consultant,最大长度=20)
定义(自我):
返回self.name
Ipd类(型号.型号):
reason\u Acmission=models.CharField(最大长度=200,空白=False)
提出投诉=models.CharField(最大投诉长度=200,)
ipd_id=models.AutoField(主键=True)
房间=模型.ForeignKey(房间,on_delete=models.CASCADE,blank=False)
入院日期=models.DateField((“日期”),
默认值=datetime.date.today)
patient=models.ForeignKey(patient,on_delete=models.CASCADE,blank=False,default=”“)
定义(自我):
返回self.patient.name
forms.py:
class PatientForm(forms.ModelForm):
类元:
模型=患者
字段=[“姓名”、“电话”、“地址”、“患者id”、“顾问”、“性别”]
IpdForm类(模型形式):
类元:
型号=Ipd
字段=[“患者”、“入院原因”、“提出投诉”,
“房间”、“入住日期”]
views.py:
@需要登录\u
def显示(请求、患者id):
patient=patient.objects.filter(pk=patient\u id)
返回呈现(请求'show.html',{'patient':patient})
@需要登录
def新(请求):
如有要求,请发送:
表单=PatientForm(request.POST)
如果form.is_有效():
如果form.save():
返回重定向('/',messages.success(请求'Patient is successfully','alert success'))
其他:
返回重定向(“/”,messages.error(请求“数据未保存”,“警报危险”))
其他:
返回重定向(“/”,messages.error(请求“表单无效”,“警告危险”))
其他:
form=PatientForm()
返回呈现(请求'new.html',{'form':form})
@需要登录
def编辑(请求,患者id):
如有要求,请发送:
patient=patient.objects.get(pk=patient\u id)
form=PatientForm(request.POST,instance=patient)
如果form.is_有效():
如果form.save():
返回重定向(“/”,messages.success(请求“患者已成功更新”,“警报成功”))
其他:
返回重定向(“/”,messages.error(请求“数据未保存”,“警报危险”))
其他:
返回重定向(“/”,messages.error(请求“表单无效”,“警告危险”))
其他:
表单=患者表单(实例=患者)
返回呈现(请求'edit.html',{'form':form})
@需要登录
def ipd(请求,患者id):
对象=获取对象或404(Ipd,患者id=患者id)
如果request.method==“POST”:
formtwo=IpdForm(request.POST)
如果formtwo.u有效():
instance=formtwo.save(commit=False)
save()实例
其他:
返回HttpResponse(formtwo.errors)
其他:
formtwo=IpdForm()
返回呈现(请求'newipd.html',{'object':对象,'form2':formtwo})
URL.py:
url(r'^order/ipd/(?P<patient_id>\d+)/$', my_order.ipd, name='ipd'),
url(r'^order/ipd/(?P\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>
名称:{ab.Name}}
电话:{{a.Phone}}
地址:{a.Address}}
性别:{a.性别}}
您发布的代码中有很多问题
views.py
中执行form.save
时,您没有调用save()
方法,该方法是一个函数,因此,表单/模型中不会保存任何内容a
,b
views.py
应该如下所示:
已编辑:
刚刚意识到这里的主要问题是您只在GET
方法上重新调整queryset,而不是在POST
上。我不知道这是不是故意的。我正在编辑我的答案,考虑到这不是故意的。另外,由于我们正在更改models.py
,请确保再次运行迁移
视图.py
从django.shortcuts导入get\u object\u或\u 404
@需要登录
def ipd(请求,患者id):
对象=获取对象或404(Ipd,患者id=患者id)
如果request.method==“POST”:
formtwo=IpdForm(request.POST)
如果formtwo.u有效():
instance=formtwo.save(commit=False)
save()实例
其他:
返回HttpResponse(formtwo.errors)
其他:
formtwo=IpdForm()
返回呈现(请求'newipd.html',{'object':对象,'form2':formtwo})
html
名称:{{object.patient.Name}}
电话:{{object.patient.Phone}}
地址:{{object.patient.Address}}
性别:{{ob