Herramientas de usuario

Herramientas del sitio


wiki2:python:django:admin

¡Esta es una revisión vieja del documento!


Django Admin

Basic

To create a super user: $ python manage.py createsuperuser

Registrar clases

from django.contrib import admin
from catalog.models import Author, Genre, Book, BookInstance

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Genre)
admin.site.register(BookInstance)

También puedes hacerlo con clases (permite añadir varios admins):

class CoopolisAdmin(AdminSite):
    site_header = "Coópolis Backoffice"
    site_title = "Coópolis backoffice"
    index_title = "Benvingut!"


coopolis_admin_site = CoopolisAdmin(name='coopolis_admin')
coopolis_admin_site.register(User)
coopolis_admin_site.register(Project)
coopolis_admin_site.register(Course)
coopolis_admin_site.register(Activity)

Las url estarían en coopolis_admin_site.urls:

urlpatterns = [
    path('entity-admin/', admin.site.urls),
    path('event-admin/', coopolis_admin_site.urls),
]

Puedes registrar también ModelAdmins:

class AuthorAdmin(admin.ModelAdmin):
    pass

admin.site.register(Author, AuthorAdmin)

O con un decorador:

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    pass

List views

Indicar los campos que se verán:

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('last_name', 'first_name', 'date_of_birth', 'date_of_death')

Los ManyToMany no se verán en la lista. Aún así podemos sacar un campo como tal:

    def display_genre(self):
        """Create a string for the Genre. This is required to display genre in Admin."""
        return ', '.join(genre.name for genre in self.genre.all()[:3])
        
    display_genre.short_description = 'Genre'

Los filtros pueden indicarse también:

class BookInstanceAdmin(admin.ModelAdmin):
    list_filter = ('status', 'due_back')

Changing the layout

To put several fields in a row:

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('last_name', 'first_name', 'date_of_birth', 'date_of_death')
    fields = ['first_name', 'last_name', ('date_of_birth', 'date_of_death')]

Add fieldsets (sections):

@admin.register(BookInstance)
class BookInstanceAdmin(admin.ModelAdmin):
    list_filter = ('status', 'due_back')
    
    fieldsets = (
        (None, {
            'fields': ('book', 'imprint', 'id')
        }),
        ('Availability', {
            'fields': ('status', 'due_back')
        }),
    )

Gotchas

Basic

Change the title and pages

admin.site.site_header = "UMSRA Admin"
admin.site.site_title = "UMSRA Admin Portal"
admin.site.index_title = "Welcome to UMSRA Researcher Portal"

Change the name of a class in the Admin

class Category(models.Model):
    ...

    class Meta:
        verbose_name_plural = "Categories"

Unregister a class

from django.contrib.auth.models import Group

admin.site.unregister(Group)
wiki2/python/django/admin.1541761794.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)