Невозможно увидеть приложение с именем "Объявления" в интерфейсе администратора
Я тестировал это много раз. Когда я добавляю приложение с именем advertisements (добавляю модели, админка + регистрация в INSTALLED_APPS), оно не отображается в интерфейсе админки (его очень трудно увидеть, но оно исчезает через микросекунды).
models.py:
from django.db import models
# Create your models here.
class Advertisement(models.Model):
pass
admin.py:
from django.contrib import admin
from .models import Advertisement
# Register your models here.
@admin.register(Advertisement)
class AdvertisementAdmin(admin.ModelAdmin):
pass
apps.py:
from django.apps import AppConfig
class AdvertisementsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'advertisements'
settings.py:
INSTALLED_APPS = [
# ...
"advertisements",
]
Изменение каталога приложений на что-то вроде advertisements2, имени приложения (в apps.py) на advertisements2 решает проблему.
Попробуйте использовать admin.site.register(Advertisement) вместо AdminView в admin.py. Если эта строка работает, вы можете добавить представление администрирования модели по отдельности следующим образом:
class AdvertisementAdmin(admin.ModelAdmin):
pass
admin.site.register(Advertisement, AdvertisementAdmin)
Вначале вопрос показался мне немного странным, и мне стало очень любопытно, что происходит. Я идеально воссоздал ваш код и получил тот же результат, что и вы. Нет приложения advertisemets в панели администратора. Я запустил отладчик и проследил выполнение строка за строкой, и все, казалось, было в порядке. Но через некоторое время мне пришло в голову, что это не может быть виной django. И это не так! Остерегайтесь самого интригующего решения вашей проблемы:
Просто отключите свой адблокер и обновите сайт!
Скорее всего, проблема (и именно это было проблемой на моем сайте) в том, что мой адблокер блокировал слово advertisement и все стили, которые к нему прилагались. Поэтому, если бы вы проверили сайт с включенным адблокером, вы бы увидели, что ваше приложение advertisements удобно расположилось в html-коде:
<div class="app-advertisements module">
<table>
<caption>
<a href="/admin/advertisements/" class="section" title="Models in the Advertisements application">Advertisements</a>
</caption>
<tbody><tr class="model-advertisement">
<th scope="row"><a href="/admin/advertisements/advertisement/">Advertisements</a></th>
Если вы удалите класс app-advertisements из <div class="app-advertisements module"> (опять же, при включенном адблокере), реклама должна волшебным образом появиться в панели администратора.