1

我有两个模型,School 和 UserProfiles,其中 UserProfiles 有一个 ForeignKey 到 School。在 Django Admin 中,我希望能够选择一所学校并让它显示所有具有外键的用户配置文件。

我这样做的方法是创建一个新的内联,模型是 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)

编辑:作为旁注,我该如何跟踪程序流以进行调试?我发现仅处理打印语句很困难。

4

1 回答 1

2

我不确定你设置错了什么。但是,错误消息应该是线索。在某些时候,您已经为用户 X 创建了一个用户配置文件,然后您尝试创建另一个。请务必注意,django 不会为用户自动创建配置文件,因此这必须是您编写的代码。

虽然没有看到代码,但我只是在黑暗中拍摄。请记住,您可以通过多种方式创建这些配置文件,例如您在用户模型上注册了 post_save 信号。

至于追踪: http ://docs.python.org/library/pdb.html

或者,在事实崩溃调试之后,您可以尝试使用http://packages.python.org/django-extensions/并在http://packages.python.org/django-extensions/runserver_plus中实现 werkzeug 调试器.html

于 2011-07-15T16:19:01.330 回答