получить полный объект User по сигналу post_save - PullRequest
1 голос
/ 14 апреля 2020

Я новичок в сигналах. То, что я хочу сделать, может быть сделано с точки зрения прагматики, и, возможно, сигналы - это не путь к go, но, несмотря на это, у меня возникают проблемы с сигналом. У меня есть модель User (custom) и модель UserIdentities. Когда создается новый пользователь, в модели UserIdentities будут созданы и сохранены 3 идентификатора:

     User(models.Model):
      fields...

     UserIdentities(models.Model):
       user = models.ForeignKey(User)

    @receiver(post_save, sender = User)
    def user_created(sender, instance, created, raw, **kwargs):
         if created:
             # generate three dept identities and save in UserIdentities model
             identities = generate_identiteies(instance)

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

1 Ответ

1 голос
/ 14 апреля 2020

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что экземпляр - это имя пользователя ... Я получаю только имя пользователя, созданного ...

Это не должно иметь место. instance в случае post_save - это фактический экземпляр, который был save d.

Вы можете проверить это, поместив assertIsInstance(instance, User.class) перед оператором if created в своем методе сигнала. Если вы не получите AssertionError, вы можете смело предположить, что instance не является строкой.

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