Я расширил свою модель пользователя, добавив обязательное поле Company
, чтобы каждый пользователь принадлежал к какой-либо компании.Поле Company
является внешним ключом для другой модели, которая определяет, что представляет собой компания.
Это прекрасно работает, за исключением того факта, что ./manage createsuperuser
сломался, так как он не знает, добавить ли этот пользовательский обязательный параметрfield.
Оказывается, я могу добавить REQUIRED_FIELDS = ['company']
к моей пользовательской модели пользователя, которая скажет createsuperuser
запросить это поле.Это лучше, но поскольку поле компании является Внешним ключом, оно запрашивает идентификатор компании, который должен быть найден любым пользователем с помощью команды createsuperuser
- не совсем удобным для пользователя.Я хочу, чтобы все администраторы, созданные с помощью команды createsuperuser
, принадлежали одной и той же компании, и эта компания создавалась автоматически, если ее не существует.
Чтение документации от django по createuperuser в нем упоминается именно то, что я хочу сделать, и точная причина, по которой я хочу это сделать:
Вы можете создать подкласс команды управления и переопределить get_input_data (), если вы хотите настроить ввод и проверку данных,Обратитесь к исходному коду за подробной информацией о существующей реализации и параметрах метода.Например, это может быть полезно, если у вас есть ForeignKey в REQUIRED_FIELDS и вы хотите разрешить создание экземпляра вместо ввода первичного ключа существующего экземпляра.
Я просто не уверен, где в моемЯ должен переопределить метод get_input_data ().
Редактировать:
Я расширил пользовательскую модель, добавив ее в models.py одного из моих приложений (login_app):
class User(AbstractUser):
company = models.ForeignKey(Company, on_delete=models.CASCADE, blank=False, null=False)
и добавив это в settings.py:
AUTH_USER_MODEL = 'login_app.User'