【问题标题】:AttributeError: 'User_Profile' object has no attribute '__name__'AttributeError:“User_Profile”对象没有属性“__name__”
【发布时间】:2021-07-24 02:09:22
【问题描述】:

我的目标是让我的forms.py 将电子邮件表单内容发送到我的 Django 数据库中的不同模型,从 Django 中的默认用户模型到我定制的 User_Profile 模型。我相信如果我能解决上面的错误,我的目标就会实现。

在我的forms.py 文件中,我从model.py 导入一个类,然后在forms.py 中再次使用该函数,这就是导致错误的原因。我用类对__ name__ 进行了研究,据我了解,这与两次不同时间使用同一个类有关,并且它不知道要运行哪个类或其他什么。如果有人可以更好地解释__name __ 并帮助我修复错误,我将不胜感激。

这是我的models.py

class User_Profile(models.Model):
    user = models.OneToOneField(User, null = True, blank = True, on_delete = models.CASCADE)
    name = models.CharField(max_length = 200, null = True)
    phone = models.CharField(max_length = 200, null = True)
    email = models.CharField(max_length = 200, null = True)
    profile_image = models.ImageField(null = True, blank = True)
    data_created = models.DateTimeField(auto_now_add = True, null = True)

    def __str__(self):
        return self.name

这是我在另一个目录中的forms.py

class RegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta():
        model = User_Profile()
        fields = ["username", "email", "password1", "password2"]
        
        def __str__(self):
            return self.name

【问题讨论】:

    标签: python django django-models django-forms


    【解决方案1】:

    问题与__name__ 无关,它只是真正问题的症状。问题是因为在 RegisterForm 的 Meta 类中传递了一个实例而不是类。所以要修复:

        class Meta():
            model = User_Profile # <-- Remove the parens
            fields = ["username", "email", "password1", "password2"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 2012-06-24
      • 1970-01-01
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多