患者用户可以自己负责 - Django Admin

时间:2018-04-08 01:12:28

标签: python django django-admin

首先,我想说我是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"但它导致所有患者用户都没有列出我创建新责任的时间。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题:

在我的负责模型中,我添加了以下几行:

    def clean(self):
    if self.user == self.patient.user:
        raise ValidationError(_("A patient can not be responsible for himself"))

所以现在病人不再对自己负责。