Проблема с добавлением / редактированием встроенных полей внешнего ключа в Django Admin - PullRequest
0 голосов
/ 15 июля 2011

У меня есть две модели, School и UserProfiles, где у UserProfiles есть ForeignKey to School.В Django Admin я хочу иметь возможность выбрать школу, чтобы она отображала все пользовательские профили, для которых есть внешний ключ.

Способ, которым я это сделал, - создать новый Inline с моделью UserProfile, добавить его в новый SchoolAdmin и зарегистрировать.

Моя проблема возникает, когда я иду, чтобы добавить новый профиль пользователя.Что происходит, я выбираю существующего пользователя из выпадающего списка и нажимаю сохранить.Однако затем я получаю сообщение об ошибке, в котором говорится, что «профиль пользователя с этим пользователем уже существует».

Кажется, что при сохранении он пытается создать новый профиль пользователя для выбранного пользователя.Я собираюсь сделать это неправильно?

Вот код, который я настроил для автоматического создания профилей пользователей при создании пользователя.

def create_user_profile(sender, instance, created, **kwargs):
"""Create the UserProfile when a new User is saved"""
    print "User Profile Creation: False"
    if created:
        print "User Profile Creation: ", created
        UserProfile.objects.get_or_create(user=instance)



post_save.connect(create_user_profile, sender=User)

РЕДАКТИРОВАТЬ: Какпримечание, как я могу отследить поток программы для отладки?Мне сложно иметь дело только с печатными заявлениями.

1 Ответ

1 голос
/ 15 июля 2011

Я не уверен, что вы настроили неправильно.Тем не менее, сообщение об ошибке должно быть ключом.В какой-то момент вы создали профиль пользователя для пользователя X, а затем попытались создать другой.Важно отметить, что django не создает профили пользователей автоматически, поэтому это должен быть код, который вы написали.

Хотя я не вижу кода, я просто снимаю в темноте.Имейте в виду, что есть несколько способов создания этих профилей, например, вы зарегистрировали сигнал post_save в пользовательской модели.

Что касается трассировки: http://docs.python.org/library/pdb.html

Или для некоторого крутого послеотладку при аварийном сбое вы можете попробовать http://packages.python.org/django-extensions/ с его реализацией сборки отладчика werkzeug в http://packages.python.org/django-extensions/runserver_plus.html

...