1. panfiser@ya.ru

    05.03.2010

    0 ↑
    0 ↓

    В разделе Storing additional information about users описывается вариант создания профиля по сигналу о создании нового django.contrib.admin.models.User. Callback-функции для django.db.models.signals.post_save предлагается регистрировать в models.py, но в каком models.py? Есть сомнение, что обработчик события надо регистрировать в модуле, где описывается модель пользователя, а не модель его профиля.

  2. Вот ещё бы сразу правильно указать свой OpenID на Яндексе...
  3. По второй ссылке:

    Where should this code live?

    You can put signal handling and registration code anywhere you like. However...

    Прочитайте внимательнее, в документации все описано.

  4. Так вот, там написано:

    However, you'll need to make sure that the module it's in gets imported early on so that the signal handling gets registered before any signals need to be sent.

    Мои опасения заключались в том, что модель профиля может импортироваться после того, как сигнал уже отправлен.

    Тем не менее, я попробовал разместить регистрацию в модели профиля, создал нового пользователя в консоли. До вызова save, вызов get_profile ожидаемо приводил к исключению DoesNotExist, а после - нет. Вопрос - почему, не из-за поля user=models.ForeignKey(User) в профиле? Или всё-таки из-за того, что Django импортирует все модули приложений указанных в settings.py?

  5. Django импортирует модели приложений, указанных в settings.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.