Возможно ли установить свойство в django (для обратной совместимости) без соответствующего поля? Вот простой тест с пользовательской моделью пользователя:Свойство модели Django без поля
class CustomUser(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True, db_index=True)
USERNAME_FIELD = 'email'
...
permissions = models.IntegerField(default=0)
@property
def is_staff(self):
return self.permissions >= 2
@is_staff.setter
def is_staff(self, value):
if value and not self.is_staff:
self.permissions = 2
if not value and self.is_staff:
self.permissions = 1
Теперь, когда я пытаюсь загрузить этот пользователь с помощью интерфейса администратора по умолчанию, я получаю следующее сообщение об ошибке: 'CustomUserAdmin.list_filter[0]' refers to 'is_staff' which does not refer to a Field.
Есть ли способ, чтобы установить это так, что модель обеспечивает is_staff
как функцию другого поля?
ОК, подумал, что это будет так. В этом примере было бы проще редактировать администратора, но есть ли способ обхода, который я мог бы использовать для предоставления 'is_staff', чтобы изменения в' is_staff' и 'permissions' задавали оба поля правильно? – kai