AttributeError: (Class) object has no attribute '__name__' 创建 ModelForms [Django & Python2.7]

Posted

技术标签:

【中文标题】AttributeError: (Class) object has no attribute \'__name__\' 创建 ModelForms [Django & Python2.7]【英文标题】:AttributeError: (Class) object has no attribute '__name__' Creating ModelForms [Django & Python2.7]AttributeError: (Class) object has no attribute '__name__' 创建 ModelForms [Django & Python2.7] 【发布时间】:2017-10-16 06:58:03 【问题描述】:

这是我第一次使用 Django,我完全不知道如何在我的项目中使用 ModelForms。到目前为止,我已经能够按照在线教程进行操作,但是没有 ModelForms(将数据添加到 Postgresql 数据库中),我无法继续前进。我试图简单地制作一个表单页面,让用户添加一些输入(2 个日期字段和 1 个文本字段),并通过提交该表单,数据将被添加到数据库中。

我得到的错误是: AttributeError: 'Hyuga_Requests' 对象没有属性 'name' [其中 Hyuga_Request 是 models.py 中设置的类]

models.py

from __future__ import unicode_literals
from django.db import models
from django.forms import ModelForm

class Hyuga_Requests(models.Model):
    name = models.CharField(max_length=50)
    s_date = models.DateField(auto_now=True)
    e_date = models.DateField(auto_now=True)
    reason = models.TextField(max_length=500)

def __unicode__(self):
    return self.name

views.py

from django.shortcuts import render
from django import forms
from .forms import Hyuga_RequestForm

def create_req(request):
    form = Hyuga_RequestForm()
    context = "form":form,
    return render(request,"request_form/requestform.html", context)

forms.py

from django import forms
from .models import Hyuga_Requests
from django.forms import ModelForm

class Hyuga_RequestForm(forms.ModelForm):
    class Meta:
        model = Hyuga_Requests()
        fields = ['name','s_date','e_date','reason']

请帮助这个小白...

【问题讨论】:

【参考方案1】:

model = Hyuga_Requests() -> model = Hyuga_Requests

【讨论】:

【参考方案2】:

出现错误是因为您在表单上调用模型。

from django import forms
from .models import Hyuga_Requests
from django.forms import ModelForm

class Hyuga_RequestForm(forms.ModelForm):
    class Meta:
        model = Hyuga_Requests
        fields = ['name','s_date','e_date','reason']

注意:我建议你使用你在 python 上定义的任何类,不要使用“_”,你可以在这里查看更多关于 PEP8 和代码样式的信息:https://www.python.org/dev/peps/pep-0008/

【讨论】:

非常感谢。由于您的帮助,我终于让它工作了!【参考方案3】:

不要在 Hyuga_RequestForm 类中的 Meta 类中实例化模型。

model = Hyuga_Requests() 应该是model = Hyuga_Requests

【讨论】:

非常感谢。由于您的帮助,我终于让它工作了!

以上是关于AttributeError: (Class) object has no attribute '__name__' 创建 ModelForms [Django & Python2.7]的主要内容,如果未能解决你的问题,请参考以下文章

解决:python爬虫运行报错——AttributeError: ‘WebDriver‘ object has no attribute ‘find_elements_by_class_name‘

解决:python爬虫运行报错——AttributeError: ‘WebDriver‘ object has no attribute ‘find_elements_by_class_name‘

解决:python爬虫运行报错——AttributeError: ‘WebDriver‘ object has no attribute ‘find_elements_by_class_name‘

AttributeError:“DataFrame”对象没有属性“label”

Selenium 之 报错AttributeError: 'list' object has no attribute 'click'

Python AttributeError:“类”对象没有属性“名称”-SetUpClass