2011-07-15 184 views
0

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

我不确定你设置错了什么。但是,错误消息应该是线索。在某些时候,您已经为User 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.html

+0

实施WERKZEUG调试器构建的,我补充说我使用的代码自动创建用户配置文件。但是,有趣的是,当我得到错误时,我的打印语句都不会被执行。 – CCSab

+0

是的,你有别的事情在别的地方最有可能是因为这似乎是一个安全的调用get_or_create,所以你的代码(或第三方应用程序)中最有可能做的事情是不应该。 – John

+0

我正在使用的唯一第三方应用是South,以处理迁移。不知道这是否会成为问题。 – CCSab

相关问题