Django Tutorial - Admin Forms
Updated at 2018-11-23 16:31
Edit polls/admin.py
:
from django.contrib import admin
from .models import Question
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
fields = ['text', 'author', 'created_at', 'updated_at']
readonly_fields = ['created_at', 'updated_at']
# or
# admin.site.register(Question, QuestionAdmin)
Or:
from django.contrib import admin
from .models import Question
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['text', 'author']}),
('Date Information', {'fields': ['created_at', 'updated_at']}),
]
readonly_fields = ['created_at', 'updated_at']
# or
# admin.site.register(Question, QuestionAdmin)
Edit polls/admin.py
:
from django.contrib import admin
from .models import Choice, Question
@admin.register(Choice)
class ChoiceAdmin(admin.ModelAdmin):
pass
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
list_display = (
'text',
'author',
'was_created_recently',
'created_at',
'updated_at'
)
fieldsets = [
(None, {'fields': ['text', 'author']}),
('Date information', {
'fields': ['created_at', 'updated_at'],
'classes': ['collapse']
}),
]
readonly_fields = ['created_at', 'updated_at']
inlines = [ChoiceInline]
Edit polls/admin.py
- QuestionAdmin
:
search_fields = ['text']
list_filter = ['created_at']
Edit polls/models.py
: You can customize list field name, field visuals and default ordering.
# ...
def was_created_recently(self) -> bool:
return self.created_at >= timezone.now() - timedelta(days=1)
was_created_recently.admin_order_field = 'created_at'
was_created_recently.boolean = True
was_created_recently.short_description = 'Created recently?'ed recently?'
# ...