Невозможно увидеть приложение с именем "Объявления" в интерфейсе администратора

Я тестировал это много раз. Когда я добавляю приложение с именем 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"> (опять же, при включенном адблокере), реклама должна волшебным образом появиться в панели администратора.

Вернуться на верх