Терпеливый пользователь может быть ответственным от самого себя - Django Admin

avatar
ebmm01
8 апреля 2018 в 01:12
48
1
1

Прежде всего я хотел бы сказать, что я новичок в 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", но это приводит к тому, что все пользователи, являющиеся пациентами, не отображаются в списке, когда я создаю нового ответственного.

Источник
AMG
8 апреля 2018 в 02:46
0

это может помочь coderhelper.com/questions/869856/…

ebmm01
8 апреля 2018 в 16:13
0

@AMG Мне удалось решить это по-другому, как указано в комментарии ниже. В любом случае спасибо за вашу помощь, поскольку она помогла мне найти решение.

Ответы (1)

avatar
ebmm01
8 апреля 2018 в 16:12
0

Мне удалось решить это следующим образом:

В моей ответственной модели я добавил следующие строки:

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

Так что теперь пациент больше не может нести ответственность за себя.