2015-10-18 80 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.