Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Mejorando el Admin: Change List

12/17
Recursos

Aportes 4

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para cambiar el diseño de la casilla de booleanos pueden añadir el decorador @admin.display() a en su modelo de Question:

from django.contrib import admin

class Question(models.Model):
    # ...
    @admin.display(
        boolean=True,
        ordering='pub_date',
        description='Published recently?',
    )
    def was_published_recently(self):
        now = timezone.now()
        return now - datetime.timedelta(days=1) <= self.pub_date <= now

Fuente

Código de la clase:

# polls/admin.py
from django.contrib import admin
from .models import Question, Choice

#Creando un TabularInLine desde el modelo de Choice
class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3

#Creando un ModelAdmin desde el modelo de Question
class QuestionAdmin(admin.ModelAdmin):
    # Que ver en la vista de Questions
    list_display = ('question_text', 'pub_date', 'was_published_recently')
    # Que filtrar en la vista de Questions
    list_filter = ['pub_date']
    # Tipo de busqueda
    search_fields=['question_text']
    #Agrupar los fields en sectores
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        #Date information se agrega un collapse
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    #Agregando la clase creada
    inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)

Mi aporte es a un posible error que les pase, en caso de que les aparezca este error :

can’t compare datetime.datetime to datetime.date

solo deben de ir al archivo de models y a la función was_published_recently en los timezone.now() hay que agregarles .date() es decir quedarían de la siguiente forma.

def was_published_recently(self):
        return timezone.now().date() >= self.pub_date >= timezone.now().date() - datetime.timedelta(days=1)

También la class ChoiceInLine puede instanciarla con
(admin.TabularInline)
Y se tendrá un diseño diferente para agregrar las choices al CREAR una question

Para mi es más práctico 😉

class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3