Python Django заполнить поле в модели, используя другое поле в той же модели - PullRequest
0 голосов
/ 01 августа 2020

У меня есть модель User. Я хочу, чтобы при регистрации пользователя поле резервирования заполнялось данными из функции, которая использует электронную почту пользователя в качестве параметра. (По сути, резервное копирование должно быть чем-то вроде «DS8ds9D», которое создается из электронной почты.

У меня есть функция, которая выполняет эту функцию «get_slack (email)», которая, как я знаю, работает, если запускать внешнюю модель с электронной почтой. Ошибка. get - это когда я пытаюсь "выполнить миграцию", говоря, что электронное письмо от "get_slack (email)" имеет значение null.

class User(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(unique=True)
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    date_joined = models.DateTimeField(default=timezone.now)

    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    slack = models.CharField(max_length=255, default=get_slack(email))

Я думаю, ясно, что я пытаюсь установить default "может быть неподходящим. Есть предложения? Спасибо.

1 Ответ

1 голос
/ 01 августа 2020

Если вы хотите создать поле резерва при регистрации пользователя, вы должны переопределить метод сохранения по умолчанию.

class User(AbstractBaseUser, PermissionsMixin):
    # ...

    def save(self, *args, **kwargs):
        self.slack = self.image    # do whatever processing you want
        super(User, self).save(*args, **kwargs)

Ссылка и Документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...