【问题标题】:Django error: AttributeError at - 'Manager' object has no attribute 'META'Django 错误:AttributeError at - 'Manager' 对象没有属性 'META'
【发布时间】:2013-06-29 04:54:33
【问题描述】:

我正在使用 django 1.4 和 python 2.7

我正在尝试从 MySQL 数据库中获取数据... 视图.py:

def myRequests(request):
    #request = ProjectRequest.objects
    response = render_to_response('myRequests.html', {'ProjectRequest': request}, context_instance = RequestContext(request))
    return response

一旦我取消注释“request = ProjectRequest.objects”,我就会收到错误:

AttributeError at /myRequests/
'Manager' object has no attribute 'META'

我没有定义任何新的用户模型,所以这个错误对我来说毫无意义。 异常位置:

/{path}/lib/python2.7/site-packages/django/core/context_processors.py in debug, line 35

modelsRequest.py:

class ProjectRequest(Model):
    reqType = CharField("Request Type", max_length = MAX_CHAR_LENGTH)
    reqID = IntegerField("Request ID", primary_key = True)
    ownerID = IntegerField("Owner ID")
    projCodeName = CharField("Project Code Name", max_length = MAX_CHAR_LENGTH)
    projPhase = CharField("Project Phase", max_length = MAX_CHAR_LENGTH)
    projType = CharField("Project Phase", max_length = MAX_CHAR_LENGTH)
    projNotes = CharField("Project Notes", max_length = MAX_CHAR_LENGTH)
    contacts = CharField("Project Notes", max_length = MAX_CHAR_LENGTH)
    reqStatus = CharField("Status", max_length = MAX_CHAR_LENGTH)
    reqPriority = CharField("Request Priority", max_length = MAX_CHAR_LENGTH)
    reqEstDate = DateTimeField("Request Estimated Complete Date", auto_now_add = True)
    lastSaved = DateTimeField("Last saved", auto_now = True)
    created = DateTimeField("Created", auto_now_add = True)

    def __unicode__(self):
        return str(self.reqID) + ": " + str(self.reqType)

    class Meta:
        app_label = 'djangoTestApp'
        db_table = 'requests'

知道发生了什么吗?!

【问题讨论】:

  • 你能发布你的实际模型和经理吗?我怀疑问题出在某个地方。
  • 我的经理是什么?
  • 您似乎没有任何自定义管理器,ProjectRequest.objects 是管理器,您可以自定义它,这可能会导致此类奇怪问题。

标签: mysql django models django-managers


【解决方案1】:

使用不同的变量名

project_request = ProjectRequest.objects

问题是因为这个context_instance = RequestContext(request)

它丢失了request 对象的上下文,因为它已被覆盖。因此问题。

def myRequests(request):
    project_request = ProjectRequest.objects
    #Now you have access to request object, 
    # do whatever you want with project_request - 
    response = render_to_response('myRequests.html', {'ProjectRequest': project_request}, context_instance = RequestContext(request))
    return response

您收到错误'Manager' object has no attribute 'META' 的原因是,当您这样做时

ProjectRequest.objects

模型ProjectRequest 的默认管理器(objects)分配给(覆盖的)局部变量request。

【讨论】:

  • 谢谢您,先生!我还发现 request = ProjectRequest.objects 是错误的。应该是 request = ProjectRequest.objects.all()
猜你喜欢
  • 2015-03-24
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
相关资源
最近更新 更多