我正在开发一个专为医生设计的应用程序(基于django内置的用户模型),它可以跟踪相关患者的治疗进度。我已经创建了一个病人模型,它存储了基本数据(姓名、姓氏等),但它还应该存储一个外文密钥给治疗这个特定患者的医生。我基本上希望每个医生只能看自己的病人,不能看其他医生的病人。这应该在登录医生填写新患者数据的表单中无缝完成。尽管病人的数据库是通用的,每个医生都应该能够有一个病人的名字已经被另一个医生使用。在
以下是我简化的患者模型:
class Patient(models.Model):
first_name = models.CharField()
second_name = models.CharField()
doctor = models.ForeignKey(User,default="", blank=True, null=True)
class Meta:
unique_together=('first_name','second_name','doctor')
表单,该表单应能够保存名字和第二个名字,而不显示“医生”字段,因为表单应该添加此字段以匹配当前登录的用户
^{pr2}$这里的视图确保当前登录的医生保存在模型的“doctor”外键中。在
@login_required
def patient_new(request):
if request.method == 'POST':
form = PatientForm(user=request.user,data=request.POST)
if form.is_valid():
bbb=form.save(commit=False)
bbb.doctor = request.user
bbb.save()
return HttpResponseRedirect(reverse('patient'))
else:
print form.errors
else:
form = PacjentForm(user=request.user)
return render_to_response('patient_new.html',{'form':form}, context_instance=RequestContext(request))
但问题是,这种解决方案不允许将相同的患者姓名分配给不同的医生(基本上,unique_的需求在一起永远不会被满足)。正确的方法是什么?在
通过查看其他解决方案,我最终找到了这个解决方案,它基本上确保用户被传递到表单,并且表单正在验证患者对于这个特定的医生是否是唯一的。 模型保持不变,我改变了形式:
以及视图.py更改:
^{pr2}$希望能帮助别人!在
相关问题 更多 >
编程相关推荐