我使用名爲UserExtension
的自定義用戶簡檔擴展了Django的用戶模型。 它通過唯一的ForeignKey關係與用戶相關,這使我可以在管理員中以聯機形式對其進行編輯! 我使用的信號爲每個新用戶創建一個新的配置文件:Django:在Django Admin中使用唯一外鍵的UserProfile
def create_user_profile(sender, instance, created, **kwargs):
if created:
try:
profile, created = UserExtension.objects.get_or_create(user=instance)
except:
pass
post_save.connect(create_user_profile, sender=User)
(這裏描述例如:Extending the User model with custom fields in Django) 的問題是,如果我通過管理創建一個新用戶,保存時出現IntegritiyError「列user_id不唯一」。它似乎不是信號被調用兩次,但我想管理員正試圖保存配置文件AFTERWARDS? 但我需要通過信號創建,如果我在系統的其他部分創建一個新用戶!
我們可以看看你的get_or_create管理器嗎? – Brant 2010-05-11 18:11:22
這是django的默認管理器! – 2010-05-11 22:13:28