Modyfikowanie Panelu Admina dla Aplikacji
14 July 2008
Comments
Django posiada rozbudowany i generowany "automatycznie" Panel Admina dla naszych aplikacji. By go uruchomić upewnij się czy masz 'django.contrib.admin', dodane do INSTALLED_APPS (jeżeli nie to dodaj i wykonaj polecenie "syncdb"). Następnie edytuj plik urls.py do postaci typu:
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
)
Panel Admina dla modeli
Dla Django 1.0 konfiguracja Panelu Admina dla modeli odbywa się poprzez plik admin.py umieszczony w katalogu aplikacji (np news/admin.py). Oto najprostszy przypadek udostępniania modeli w PA:# -*- coding: utf-8 -*-
from django.contrib import admin
#import pliku z modelami
from news.models import *
#rejestrujemy każdy model podając jego nazwę
admin.site.register(Category)
admin.site.register(News)
# -*- coding: utf-8 -*-
from django.contrib import admin
from news.models import *
# dla kategorii
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name','icon')
prepopulated_fields = {'slug': ('name',)}
# dla wiadomości
class NewsAdmin(admin.ModelAdmin):
list_display = ('title','date')
prepopulated_fields = {'slug': ('title',)}
# rejestracja wraz z podaniem klasy konfigurującej PA
admin.site.register(Category, CategoryAdmin)
admin.site.register(News, NewsAdmin)
Lista wpisów
By określić pola, których wartości mają być wyświetlane należy zdefiniować zmienną list_displaylist_display = ('nazwa pola', 'nazwa pola')
Dodanie zmiennej list_filter doda po prawej stronie listy wpisów menu umożliwiające filtrowanie ich po wartościach danego pola. Zmienna search_fields zawierająca nazwy pól doda opcję wyszukiwania pośród tych pól:
search_fields = ['news_title', 'news_text']
date_hierarchy zawierające nazwę pola typu DateTimeField lub DateField doda nad listą wpisów menu archiwalne umożliwiające wyświetlanie wpisów dla danych lat, miesięcy itd.
Formularze Dodaj/Edytuj
Możemy ograniczyć pola, które mają być wyświetlane w formularzach dodaj/edytuj. Służy do tego lista fieldsets:fieldsets = (
(_('Data'), {
'fields': ('category', 'name', 'description', 'order', 'use_moderators', 'moderators', 'use_prefixes', 'allow_anonymous')
}),
(_('Stats'), {'fields': ('topics', 'posts'), 'classes': ('collapse',)}),
('', {'fields': ('lastposter', 'lasttopic', 'modification_date', ), 'classes': ('collapse', 'wide')}),
)
)
fieldsets = ( ('Komórka 1', { 'fields': ('pole1', 'pole2') } ), ('Komórka 2', { 'fields': ('pole3', 'pole4') } ), )
RkBlog
Comment article