2012-05-23 99 views
0

我有我創建的用戶配置文件,需要傳遞一些參數以避免IntegrityError的問題,例如不可空字段。我在頁面底部編寫了我的創建掛鉤here,但是當我撥打create_user時,我得到完整性錯誤,因爲create_user正試圖保存剛剛使用未初始化配置文件創建的用戶。我怎樣才能解決這個問題?將字段傳遞給用戶配置文件的post_save掛鉤?

回答

1

在提供的鏈接上沒有關於如何自動創建用戶配置文件的詳細信息,所以我不確定您是如何設置它的。然而,這是典型的方式:

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     UserProfile.objects.get_or_create(user=instance) 

signals.post_save.connect(create_user_profile, sender=User) 

這聽起來像你的問題是,UserProfile(或等效模型)的附加字段不能爲空,正因爲如此,你要爲這些字段提供值。但是,使用post_save信號根本無法實現。通常,配置文件中的所有非char字段都可以爲空或提供合理的默認值,因此,至少可以創建沒有特定信息的對象。通過您的界面,您可以強制用戶填寫他們的配置文件,但在數據庫級別執行該操作並不明智。