【问题标题】:Django error: 'QueryDict' object has no attribute '_meta'Django 错误:“QueryDict”对象没有属性“_meta”
【发布时间】:2011-06-23 04:20:08
【问题描述】:

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

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']

【问题讨论】:

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


    【解决方案1】:

    发问题的时候最好贴回溯错误!

    也就是说,错误来自于您将 request.GET 传递给了一个不期望的 ModelAdmin 管理对象。

    但是,当您尝试使用神奇的 change_list 视图模板时,您还有很长的路要走与 django 新手 相同。

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

    至少,您必须在模板中为cl 变量传递一个ChangeList 对象。

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

    说真的,虽然我想劝你不要这样做。使用 Django 真的很有趣!

    【讨论】:

    • 感谢您的回答。我来看看 ModelAdmin.changelist_view()。但我真的很喜欢管理应用程序中开箱即用的内联编辑、排序、分页。如果我可以在我的应用程序中获得相同的视图而无需从头开始,那将是非常棒的。
    • 是的,这绝对是不错的 :) 所以如果你要这样做,第一步是重现 ChangeList 对象并为其提供所需的数据。只是不得不警告你!
    猜你喜欢
    • 2020-07-05
    • 1970-01-01
    • 2022-09-23
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2021-02-22
    相关资源
    最近更新 更多