Как предотвратить конфликтующие приспособления с кодом сигнала django post_save?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как предотвратить конфликтующие приспособления с кодом сигнала django post_save?

Сообщение Anonymous »

В моем приложении я хочу создавать записи в определенных таблицах, когда подписывает новый пользователь. Например, я хочу создать пользовательский профиль, который затем будет ссылаться на их компанию и некоторые другие записи для них. Я реализовал это с помощью сигнала post_save: < /p>

def callback_create_profile(sender, **kwargs):
# check if we are creating a new User
if kwargs.get('created', True):
user = kwargs.get('instance')
company = Company.objects.create(name="My Company")
employee = Employee.objects.create(company=company, name_first=user.first_name, name_last=user.last_name)
profile = UserProfile.objects.create(user=user, employee=employee, partner=partner)
# Register the callback
post_save.connect(callback_create_profile, sender=User, dispatch_uid="core.models")
< /code>

Это работает хорошо при запуске. Я могу использовать администратор для создания нового пользователя, а остальные три таблицы также получают записи с разумным. (За исключением того, что сотрудник, так как пользователь. First_name и user.last_name не заполнены в форме администратора, когда он сохраняет. Я все еще не понимаю, почему это делается так) < /p>

Проблема возникла, когда я запустил свой тестовый набор. До этого я создал кучу светильников, чтобы создать эти записи в таблицах. Теперь я получаю ошибку, в которой говорится: < /p>

IntegrityError: duplicate key value violates unique constraint "core_userprofile_user_id_key"
< /code>

Я думаю, что это потому, что я уже создал записи компании, сотрудника и профиля в приспособлении с идентификатором «1», и теперь сигнал post_save пытается воссоздать его. Могу ли я обнаружить, что я запускаю как часть тестового набора и не создавать эти записи? Должен ли я удалить эти записи из приспособлений сейчас (хотя сигнал только устанавливает значения, а не значения, с которыми я хочу тестировать)? Почему код загрузки приспособления не перезаписывает созданные записи? < /P>

Как это делают люди? < /P>

Подробнее здесь: https://stackoverflow.com/questions/349 ... ignal-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»