我对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']
答案 0 :(得分:2)
发布问题时最好发布追溯错误!
也就是说,错误来自于您将request.GET
传递给ModelAdmin
管理对象,而该对象并不期待它。
你面前有很长的麻烦之路,因为你正在尝试使用神奇的change_list视图模板,该模板由一组更神奇的,未记录的模板标签操作,这些标签通常不会出现与 django 的新句子相同。
我认为你走错了路只是因为django的管理员不容易入侵。
至少,您必须为ChangeList
变量传递cl
对象的模板。
如果你真的想这样做,我唯一能给出的建议是看看django.contrib.admin.options.ModelAdmin.changelist_view()
,因为那是你想要复制的内容。
说真的,虽然我想谈谈你。 Django真的很有趣!