2016-09-23 24 views
0

我得到的错误是:将用户扩展到自定义表单,“user_id”字段是我的自定义表单是“属性”,它链接到表“auth_user”未保存,并且我需要这两个表相关,以便使用我的自定义窗体属性和django用户的形状。无法在django中扩展用户表单

我的models.py

from __future__ import unicode_literals 
from django.contrib.auth.models import User 
from django.db import models 

# Create your models here. 
class Profile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    first_name = models.CharField(max_length=100) 
    last_name = models.CharField(max_length=100) 
    Matricula = models.CharField(max_length=25) 

forms.py

class SignupForm(forms.ModelForm): 
    class Meta: 
     model = Profile 
     fields = ('first_name', 'last_name', 'Matricula') 

     #Saving user data 
    def signup(self, request, user): 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     user.Matricula = self.cleaned_data['Matricula'] 
     user.save() 

     ##Save profile 

     profile = Profile() 
     Profile.user = user 
     profile.Matricula = self.cleaned_data['Matricula'] 
     profile.save() 

我想:

user = models.OneToOneField(User, on_delete=models.CASCADE) 

,但我得到一个错误: Error

您认为可以使用ForeignKey或正确使用OneToOneField吗?

回答

2

你应该小心你的资本。您已将用户值分配给类,而不是实例。它应该是:

profile = Profile() 
profile.user = user 

或者更好:

profile = Profile(user=user) 
+0

真的吗?由一个“P”,非常感谢!现在一切正常 –

2

您没有设置userProfile该实例:

profile = Profile() 
profile.user = user # Notice the case of Profile 
+0

谢谢你,我做了很多,感谢 –