2011-07-15 187 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

相關問題