Django. Админ интерфейс. Django. Админ интерфейс. django admin

Django. Админ интерфейс.

Open in new window

Админ интерфейс.

Добавим классы админки в main/admin.py

from django.contrib import admin

from .models import Category, News, Comment

# Register your models here.

class CategoryAdmin(admin.ModelAdmin):
    pass

admin.site.register(Category,CategoryAdmin)

class NewsAdmin(admin.ModelAdmin):
    pass

admin.site.register(News,NewsAdmin)

class CommentAdmin(admin.ModelAdmin):
    pass

admin.site.register(Comment,CommentAdmin)

django admin

Для того, чтобы изменить заголовки ссылок в списках, необходимо добавить и описать метод str в классе модели.

class Category(models.Model):
    name = models.CharField(max_length=250)

    def __str__(self):
        return self.name

Доступ к медиа контенту.

Для того, чтобы определить каталог для хранения загружаемых изображений, нужно добавить 2 переменные в настройки settings.py.

MEDIA_ROOT = os.path.join(BASE_DIR, "media")

MEDIA_URL = '/media/'

Так же необходимо добавить роутинг для медиа-содержимого для DEBUG режима в файле urls.py.

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Далее, для того, чтобы определить папку, для хранения изображений, дополним поле image переменной upload_to.

class News(models.Model):
    ...
    image = models.ImageField(upload_to='news',null=True, blank=True)

После чего изображения должны загружатся в media/news и быть доступными для просмотра в браузере.

Пример конфигурирования админ интерфейса на примере класса NewsAdmin.

class NewsAdmin(admin.ModelAdmin):
    list_display = ['title', 'text', 'category']
    list_filter = ['category']
    search_fields = ['title']
    list_editable = ['category']
    raw_id_fields = ['category']

Other topics