【问题标题】:Problem with Adding/Editing inline Foreign Key Fields in Django Admin在 Django Admin 中添加/编辑内联外键字段的问题
【发布时间】:2011-07-15 15:43:16
【问题描述】:

我有两个模型,School 和 UserProfiles,其中 UserProfiles 有一个指向 School 的 ForeignKey。在 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)

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

【问题讨论】:

    标签: django django-admin user-profile


    【解决方案1】:

    我不确定您设置的错误。但是,错误消息应该是线索。在某些时候,您已经为用户 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 中构建 werkzeug 调试器的实现

    【讨论】:

    • 我添加了用于自动创建用户配置文件的代码。然而,有趣的是,当我收到错误时,我的打印语句都没有执行。
    • 是的,您很可能在其他地方发生了其他事情,因为这似乎是使用 get_or_create 进行的安全调用,因此很可能在您的代码(或第 3 方应用程序)中有其他内容正在做不应该做的事情。
    • 我使用的唯一第 3 方应用程序是 South,用于处理迁移。不确定这是否是问题。
    • 我在我的桌子上做了一个 manage.py 重置,它现在可以工作了。一定是与南方有关的一些奇怪的事情。
    猜你喜欢
    • 2015-03-20
    • 2011-09-23
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2012-10-19
    • 2015-02-08
    • 1970-01-01
    相关资源
    最近更新 更多