Не имеет атрибута "_meta" ошибка при создании объекта ModelAdmin

Я новичок в Django, и я пытался настроить интерфейс администратора для моей модели, но я получаю сообщение об ошибке при попытке добавить объект ModelAdmin. Мой код и ошибка включены ниже. Если я уберу объект BlogAdmin из оператора register, я не получу никаких ошибок, и сайт загрузится нормально.

Спасибо за вашу помощь!

class Blog(models.Model):
    name = models.CharField(max_length=300)
    url = models.URLField()

class BlogAdmin(admin.ModelAdmin):
    list_display = ['name', 'url']
    search_fields = ["name"]

admin.site.register([Blog,BlogAdmin])

Я получаю следующую ошибку:

Тип объекта "BlogAdmin" не имеет атрибута "_meta"

Exception Location:     /Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/site-packages/django/contrib/admin/sites.py in register, line 80
Python Executable:  /Users/Bilal/Development/Django/ENV/traveller3/bin/python
Python Version:     2.7.1
Python Path:    

['',
 '/Applications/PyCharm.app/helpers/pydev',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/site-packages/MySQL_python-1.2.3c1-py2.7-macosx-10.7-intel.egg',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/site-packages/scikit_learn-0.9-py2.7-macosx-10.7-intel.egg',
 '/Users/Bilal/Development',
 '/Library/Python/2.7/site-packages/pip-1.0.2-py2.7.egg',
 '/Users/Bilal/Development/scrapyard',
 '/Applications/PyCharm.app/helpers',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python27.zip',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/plat-darwin',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/plat-mac',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/Bilal/Development/Django/ENV/traveller3/Extras/lib/python',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/lib-tk',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/lib-old',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/lib-dynload',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/site-packages',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/site-packages/PIL',
 '/Library/Python/2.7/site-packages',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
 '/Users/Bilal/Development/Django/ENV/traveller3/lib/python2.7/site-packages/IPython/extensions']

2 ответа

Решение

Когда вы пишете:

admin.site.register([Blog, BlogAdmin])

Вы регистрируете в админке две модели: Blog а также BlogAdminВы должны зарегистрироваться Model а также ModelAdmin для этого, как это:

admin.site.register(Blog, BlogAdmin) 

-> если у вас есть только одна модель:

      from django.contrib import admin
from .models import MyModel1

class myModel1Admin(admin.ModelAdmin):
    list_display = ("name", "address")

admin.site.register(MyModel1, myModel1Admin)

-> но если у вас более одной модели или ModelAdmin, вы можете зарегистрировать их отдельно: например:

      from django.contrib import admin
from .models import MyModel1, MyModel2

class myModel1Admin(admin.ModelAdmin):
    list_display = ("name", "address")

class myModel2Admin(admin.ModelAdmin):
    list_display = ("name", "photo")

admin.site.register(MyModel1, myModel1Admin)
admin.site.register(MyModel2, myModel2Admin)
Другие вопросы по тегам