Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒Python⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐SQL\T-SQL
⇐FreeBSD and Nix
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

Django: простой проект часть 4


Продолжаем серию статей по Django и Python.

В этом уроке мы поработаем с админкой.


Минимальные действия для запуска админки

в C:\django_code\first\first\settings.py
в разделе INSTALLED_APPS раскометнтировать 'django.contrib.admin',

 

Когда Django загружает URLconf от urls.py при запуске сервера, он выполняет admin.autodiscover (), 
эта функция перебирает установки INSTALLED_APPS и ищет файл с именем admin.py на каждом из установленных приложений. 
Если admin.py существует в данном приложении, он выполняет код в этом файле.

C:\django_code\first\first\urls.py

from django.conf.urls import patterns, include, url

from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    url(r'^firstapp/', include( 'firstapp.urls' ) ),
    url(r'^admin/', include(admin.site.urls)),
)

 

теперь зарегистрируем наши модели

C:\django_code\first\firstapp\admin.py

from django.contrib import admin

from firstapp.models import dept, workers

admin.site.register(dept)
admin.site.register(workers)

 


Теперь добавим удобства

C:\django_code\first\firstapp\admin.py

1 добавим заголовок админки


from django.contrib import admin

from firstapp.models import dept, workers

#Заголовок админки
admin.AdminSite.site_header = 'Заголовок админки'

admin.site.register(dept)
admin.site.register(workers)  

 

2 после добавления записей, мы видим неудобнуое отображение в списке добавленных записей,

выведем их в "человеческом виде"

C:\django_code\first\firstapp\models.py
from django.db import models

class dept ( models.Model ):
    def __str__(self):
        return self.name
    name       = models.CharField(max_length=15)
    

class workers ( models.Model ):
    def __str__(self):
        return self.name
    dept       = models.ForeignKey(dept)
    name       = models.TextField()
    birthday   = models.DateTimeField()
    boss       = models.CharField(max_length=12)
    
    
    
3 изменение порядка полей и скрытие

C:\django_code\first\firstapp\admin.py

from django.contrib import admin

from firstapp.models import dept, workers

#Заголовок админки
admin.AdminSite.site_header = 'Заголовок админки'


class WorkersAdmin(admin.ModelAdmin):
    #fieldsets - название группы полей.
    #В fields передаем поля из модели.
    #Во второй строке класс "collapse", отображает группу полей изначально скрытой.
    fieldsets = [
        (None,               {'fields': ['dept']}),
        ('Информация о работнике', {'fields': ['name', 'birthday', 'boss'], 'classes': ['collapse']}),
    ]


admin.site.register(dept)
#WorkersAdmin передается как настройка для класса workers
admin.site.register(workers, WorkersAdmin)  

 

4 Отображение доп.полей в отображении списка работников

C:\django_code\first\firstapp\admin.py


from django.contrib import admin

from firstapp.models import dept, workers

#Заголовок админки
admin.AdminSite.site_header = 'Заголовок админки'


class WorkersAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['dept']}),
        ('Информация о работнике', {'fields': ['name', 'birthday', 'boss'], 'classes': ['collapse']}),
    ]
    #Отображение доп.полей в отображении списка работников
    #http://127.0.0.1:8000/admin/firstapp/workers/
    list_display = ('name', 'dept', 'birthday')


admin.site.register(dept)
admin.site.register(workers, WorkersAdmin)  

 


5 Добавим поле поиска(поиск по указанному полю):

C:\django_code\first\firstapp\admin.py

from django.contrib import admin

from firstapp.models import dept, workers

#Заголовок админки
admin.AdminSite.site_header = 'Заголовок админки'


class WorkersAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['dept']}),
        ('Информация о работнике', {'fields': ['name', 'birthday', 'boss'], 'classes': ['collapse']}),
    ]
    list_display = ('name', 'dept', 'birthday')
    #Добавим поле поиска(будет искать по указанному полю):
    search_fields = ['name']


admin.site.register(dept)
admin.site.register(workers, WorkersAdmin)  

 

6 Добавления связанных объектов 
добавим возможность добавлять сотрудников из формы добавления департамента

C:\django_code\first\firstapp\admin.py

from django.contrib import admin
from firstapp.models import dept, workers

admin.AdminSite.site_header = 'Заголовок админки'

#Добавления связанных объектов (отобразим функционал добавления workers в dept)
#Варианты отображения TabularInline и StackedInline
class WorkersInline(admin.TabularInline):
#class ChoiceInline(admin.StackedInline):
    model = workers
    #Показать 3 формы для добавления работников в департамент.
    extra = 3

class DeptAdmin(admin.ModelAdmin):
    #функционал добавления workers в dept
    inlines = [WorkersInline]

class WorkersAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['dept']}),
        ('Информация о работнике', {'fields': ['name', 'birthday', 'boss'], 'classes': ['collapse']}),
    ]
    list_display = ('name', 'dept', 'birthday')
    search_fields = ['name']


admin.site.register(dept, DeptAdmin)
admin.site.register(workers, WorkersAdmin)  

 

На этом все, видео выложу на моем канале YouTube!


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru