首先,我想说我是Django和Python的新手。
我正在使用Django 2.0编写应用程序。我对 用户 有两种遗传: 患者 和 负责 即可。 患者 需要 用户 才能存在且 负责 需要 患者 才能存在。 负责 可能有几个 患者 但是一个 患者 >可能只有一个 负责 。
但是我遇到以下问题:患者不能对自己负责,目前发生这种情况。我怎样才能阻止这种情况发生?
患者模型:
class Patient(models.Model):
user = models.OneToOneField(User, related_name='patient',
on_delete=models.CASCADE, unique=True)
(...)
负责任的模式:
class Responsible(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE,
limit_choices_to=Q(patient=None))
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
正如您所看到的,我正在使用" limit_choices_to"但它导致所有患者用户都没有列出我创建新责任的时间。
答案 0 :(得分:0)
我设法解决了这个问题:
在我的负责模型中,我添加了以下几行:
def clean(self):
if self.user == self.patient.user:
raise ValidationError(_("A patient can not be responsible for himself"))
所以现在病人不再对自己负责。