Здравствуйте, в исходниках Django я вижу следующее:
def create_superuser(self, username, email=None, password=None, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_staff') is not True:
raise ValueError('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(username, email, password, **extra_fields)
Это метод менеджера модели User.
Я написал свой менеджер и в нем этот метод выглядит следующим образом:
def create_superuser(self, email, password, **extra_fields):
for field in ['is_staff', 'is_superuser', 'is_active']:
extra_fields.setdefault(field, True)
if not extra_fields.get(field):
raise ValueError(f'Superuser must have {field}=True.')
return self.create_user(email, password, **extra_fields)
Но из этого всего следует вопрос, заключающийся в том, что я не нахожу целесообразности производить проверку if not extra_fields.get, ожидая True, если мы только что сами в дикте установили значения в True. Так вот зачем же создатели фрейма таким образом организовали метод?