【问题标题】:Failed to extends User form in django无法在 django 中扩展用户表单
【发布时间】:2017-02-01 14:06:08
【问题描述】:

我得到的错误是:将用户扩展到自定义表单,“user_id”字段是我的自定义表单是“属性”,它链接到表“auth_user”没有保存,我需要两个表相关使用我的自定义表单属性和 django 用户的形状。

我的模型.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?

【问题讨论】:

    标签: python django


    【解决方案1】:

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

    profile = Profile()
    profile.user = user
    

    或者更好:

    profile = Profile(user=user)
    

    【讨论】:

    • 真的吗?一个“P”,非常感谢!现在一切正常
    【解决方案2】:

    您没有将user 设置为Profile 的实例:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2017-10-20
      • 2014-03-12
      相关资源
      最近更新 更多