Могу ли я использовать текущего зарегистрированного пользователя в models.py?
Что у меня есть:
Стандартная модель django User с вложенной моделью Profile, которая, помимо прочего, содержит ForeignKey к модели Office. Таким образом, каждый пользователь в моем приложении привязан к определенному офису. И в каждом офисе есть несколько смен.
models.py:
class Profile(models.Model):
id = models.AutoField(primary_key=True)
user = models.OneToOneField(User, on_delete=models.CASCADE)
office = models.ForeignKey(Office, on_delete=models.RESTRICT)
class Office(models.Model):
id = models.AutoField(primary_key=True)
short_name = models.CharField(max_length=3, default='FRA', null=True, unique=True)
long_name = models.CharField(max_length=10, default='Frankfurt', null=True, unique=True)
class Shift(models.Model):
id = models.AutoField(primary_key=True)
office = models.ForeignKey(Office, on_delete=models.RESTRICT)
short_name = models.CharField(max_length=5, default="")
long_name = models.CharField(max_length=20, default="")
Что я пытаюсь сделать:
Теперь, в моем CreateView
я хочу ограничить доступные варианты в поле "shift" только теми, которые прикреплены к офису текущего вошедшего пользователя. Я думал об использовании опции limit_choices_to
в ForeignKey
, но я не могу понять, как получить доступ к информации о пользователе в модели? Что-то вроде
class Shift(models.Model):
id = models.AutoField(primary_key=True)
office = models.ForeignKey(Office, on_delete=models.RESTRICT, limit_choices_to={'office': ???})
short_name = models.CharField(max_length=5, default="")
long_name = models.CharField(max_length=20, default="")