Ошибка Django: у объекта 'QueryDict' нет атрибута '_meta' - PullRequest
1 голос
/ 08 февраля 2011

Я очень новичок в 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']

1 Ответ

2 голосов
/ 08 февраля 2011

Лучше всего публиковать сообщение об ошибке при отправке вопроса!

Тем не менее, ошибка возникает из-за того, что вы передаете request.GET администратору ModelAdmin, который не ожидает его.

У вас впереди долгий путь неприятностей, поскольку вы пытаетесь использовать волшебный шаблон представления change_list, оперируемый набором еще более волшебных недокументированных тегов шаблонов, которые обычно просто не появляются в том же предложении, что и новичок в django .

Я думаю, что вы на неправильном пути просто потому, что администратору django нелегко взломать.

Как минимум, вам нужно передать в шаблоне объект ChangeList для переменной cl.

Если вы действительно хотите это сделать, единственный совет, который я могу дать, - взглянуть на django.contrib.admin.options.ModelAdmin.changelist_view(), поскольку именно это вы пытаетесь повторить.

Серьезно, хотя я бы хотел отговорить вас от этого. С Джанго действительно весело работать!

...