患者用户可以从自己的Django管理员负责

2022-12-05 03:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我想说的是,我对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\u choices\u to”,但这会导致在我创建新的负责人时,所有患者用户都没有列出


Tags: django用户患者modelonmodelsdeleteclasscascade病人userpatientonetoonefield
1条回答
网友
1楼 · 发布于 2022-12-05 03:21:41

我设法解决这个问题如下:

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

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

所以现在病人已经不可能对自己负责了