Django错误:'QueryDict'对象没有属性'_meta'

时间:2011-02-08 02:43:15

标签: django django-models django-admin django-views

我对django很新,所以这可能是一个noob问题。 我正在尝试重用django admin的更改列表视图。我已经创建了一个管理模型,并希望为变更列表模板提供这些对象的列表。在我看来,我有:

def placements(request):
    partner_id = request.session.get('partner_id', 0)
    self = PlacementAdmin(request.GET, Placement.objects.filter(partner=partner_id))
    return render_to_response('publisher/placement/change_list.html', {'cl': self})

当我尝试从浏览器点击此功能时出现此错误:     'QueryDict'对象没有属性'_meta' 任何人都可以告诉我错误是什么,或者提供一种更简单的方法来完成这个,以防我完全走错了路。

这是完整的痕迹:

Request Method:     GET
Request URL:    http://localhost:8080/publisher/
Django Version:     1.3 beta 1
Exception Type:     AttributeError
Exception Value:    

'QueryDict' object has no attribute '_meta'

Exception Location:     /Users/imran/django_env/lib/python2.6/site-packages/django/contrib/admin/options.py in __init__, line 278
Python Executable:  /Users/imran/django_env/bin/python
Python Version:     2.6.1
Python Path:    

['.',
 '.',
 '/Users/imran/Workspaces/publisher/django/pub_admin',
 '/Users/imran/django_env/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg',
 '/Users/imran/django_env/lib/python2.6/site-packages/pip-0.8.1-py2.6.egg',
 '/Users/imran/django_env/lib/python26.zip',
 '/Users/imran/django_env/lib/python2.6',
 '/Users/imran/django_env/lib/python2.6/plat-darwin',
 '/Users/imran/django_env/lib/python2.6/plat-mac',
 '/Users/imran/django_env/lib/python2.6/plat-mac/lib-scriptpackages',
 '/Users/imran/django_env/Extras/lib/python',
 '/Users/imran/django_env/lib/python2.6/lib-tk',
 '/Users/imran/django_env/lib/python2.6/lib-old',
 '/Users/imran/django_env/lib/python2.6/lib-dynload',
 '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6',
 '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin',
 '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk',
 '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac',
 '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages',
 '/Users/imran/django_env/lib/python2.6/site-packages']

1 个答案:

答案 0 :(得分:2)

发布问题时最好发布追溯错误!

也就是说,错误来自于您将request.GET传递给ModelAdmin管理对象,而该对象并不期待它。

你面前有很长的麻烦之路,因为你正在尝试使用神奇的change_list视图模板,该模板由一组更神奇的,未记录的模板标签操作,这些标签通常不会出现与 django 的新句子相同。

我认为你走错了路只是因为django的管理员不容易入侵。

至少,您必须为ChangeList变量传递cl对象的模板。

如果你真的想这样做,我唯一能给出的建议是看看django.contrib.admin.options.ModelAdmin.changelist_view(),因为那是你想要复制的内容。

说真的,虽然我想谈谈你。 Django真的很有趣!