У меня есть модель, которая имеет 2 ForeignKeys для той же модели:
class Note(models.Model):
sender = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='sender_note', on_delete=models.CASCADE)
receiver = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
related_name='reciever_note', on_delete=models.CASCADE)
status = models.BooleanField(blank=True, null=True)
action = models.CharField(choices=NOTE_CHOICES, max_length=5, blank=True, null=True)
Бывают ситуации, когда получатель и отправитель - это один и тот же пользователь, но в большинстве случаев это разные пользователи.
Я создал пользовательский набор запросов, где я использую RawQueryset:
qs_str = 'SELECT N.id, N.status,N.action, U.email AS email FROM notes_note AS N LEFT JOIN users_user AS U on N.sender_id=U.id WHERE action IN %s AND status IS NOT TRUE AND U.is_staff=%s'
qs = Note.objects.raw(qs_str, [action, user_is_staff])
Мне нужно получить:
- и получатель, и отправитель (чтобы получить от них атрибуты, особенно электронную почту)
- проверить, является ли отправитель персоналом или нет