2015-10-18 48 views
1

我使用Django 1.8和django-allauth。我使用自定義用戶模型。 我的用戶模型鏈接到組,所以我創建我的自定義用戶模型如下:django-allauth註冊表格中的用戶的外國模型

class MyUser(AbstractBaseUser): 
    email = models.EmailField(
    verbose_name='email address', 
    max_length=255, 
    unique=True, 
) 
    group = models.ForeignKey(Group) 

正如你可以看到,一羣是必填字段創建一個新用戶時。

在註冊表格中,我將默認值放到組中。

class SignupForm(forms.Form): 
    group = Group.objects.get(name='default') 
    def signup(self, request, user): 
     user.group = group 
     user.save() 

但是當我嘗試註冊時顯示錯誤。以下是錯誤:

IntegrityError at /accounts/signup/ 
(1048, "Column 'group_id' cannot be null") 
Request Method: POST 
Request URL: http://127.0.0.1:8000/accounts/signup/ 
Django Version: 1.8.3 
Exception Type: IntegrityError 
Exception Value:  
(1048, "Column 'group_id' cannot be null") 

所以我的問題是,如何在註冊時的必填字段「羣」保存到新用戶的組是在我的用戶模型必填字段。

+0

Group.objects.get(name ='default')是否存在?那是你的整個SignupForm嗎?如果沒有,你可以發佈整個表格。 – user2719875

+0

這是我的整個表格。我正在使用django-allauth。我只需要電子郵件地址和密碼即可註冊。電子郵件地址和密碼由Allauth自動處理。 – Joey

+0

沒錯。感謝您更新帖子。問題是,Group.objects.get(name ='default')實際上是否存在?有沒有一個名稱爲'默認'的組? – user2719875

回答

0

最後我做的是我在模型的Group字段中添加了一個默認值。當用戶註冊時,它會自動分配給默認組。

group = models.ForeignKey(Group, default='2') # id = '2' which is my default group.