Как я могу проверить, является ли булево значение из другой модели истинным для пользователя команды?
У меня есть следующая модель, которую я хочу использовать для добавления прав пользователям, которые являются частью команды:
class Rights(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
team = models.ForeignKey(Teams, on_delete=models.CASCADE)
read = models.BooleanField(default=True)
write = models.BooleanField(default=False)
edit = models.BooleanField(default=False)
Некоторым пользователям необходимо иметь возможность делать новые записи. Некоторым такая возможность запрещена. Итак, если какой-то пользователь посылает запрос, как я могу проверить, является ли одно или несколько из этих булевых значений истинным или ложным для этого конкретного пользователя?
Вы можете получить объект Rights, указывающий на myuser и myteam, а затем осмотреть поля read, write и/или edit:
right = Rights.objects.get(user=myuser, team=myteam)
right.read # bool, True or False
right.write # bool, True or False
right.edit # bool, True or False
Вы можете гарантировать, что для каждой комбинации user/team существует не более одной записи с:
from django.conf import settings
class Right(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
team = models.ForeignKey(Teams, on_delete=models.CASCADE)
read = models.BooleanField(default=True)
write = models.BooleanField(default=False)
edit = models.BooleanField(default=False)
class Meta:
constraints = [
models.UniqueConstraint(fields=('user', 'team'), name='unique_per_user_team')
]
Примечание: Обычно лучше использовать
settings.AUTH_USER_MODEL[Django-doc] для ссылки на модель пользователя, чем использоватьUserмодель [Django-doc] напрямую. Для получения дополнительной информации вы можете посмотреть ссылка наUserмодель раздел документации .
Примечание: обычно модели Django дается сингулярное имя, поэтому
Rightвместо.Rights