Вы пытаетесь получить доступ к атрибуту is_staff
, которого нет в модели TrainerProfile
. is_staff
является атрибутом User
, на который вы ссылаетесь в поле user
модели TrainerProfile
.
Чтобы получить доступ к этому свойству, вам необходимо "пересмотреть" отношение из Subscription
-> TrainerProfile
-> User
. Django позволяет вам сделать это, используя двойное подчеркивание, например: some_fk_field__fk_field_attribute
.
В вашем примере вам нужно изменить опцию limit_choices_to
на trainer
, чтобы пройти по отношению к пользователь, вот так:
class Subscription(models.Model):
client = models.OneToOneField(ClientProfile, on_delete=models.CASCADE)
trainer = models.ForeignKey(TrainerProfile, null=True, blank=True,
on_delete=models.SET_NULL, <b>limit_choices_to={'user__is_staff': True}</b>)
plan = models.ForeignKey(Plan, on_delete=models.CASCADE)
transaction = models.OneToOneField(PaymentHistory, on_delete=models.CASCADE)
start_date = models.DateTimeField()
end_date = models.DateTimeField()
class TrainerProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
dob = models.DateField(null=True)
experience = models.PositiveIntegerField(default=0)