Django admin page modification

 Description

 As per our requirement, we can tweak the admin page with models

 

 models.py


from django.db import models
from django.utils import timezone
import datetime
# Create your models here.
from django.contrib import admin


class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date_published')

def __str__(self):
return self.question_text

@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


class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)

def __str__(self):
return self.choice_text


admin.py

from django.contrib import admin

# Register your models here.

from .models import Question, Choice

"""
class QuestionAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question_text']
"""

"""
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
('Question', {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
]
"""

"""
# want to create the choices when create the question object -- stacked Inline
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3


class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
('Question', {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
"""


# want to create the choices when create the question object -- tabular Inline
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3


class QuestionAdmin(admin.ModelAdmin):
list_display = ('question_text', 'pub_date', 'was_published_recently')
list_filter = ['pub_date']
list_per_page = 3
search_fields = ['question_text']
fieldsets = [
('Question', {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]


admin.site.register(Question, QuestionAdmin)
# admin.site.register(Question, QuestionAdmin)
# admin.site.register(Choice)






Comments

Popular posts from this blog

Django Server setup with Apache with mod_wsgi in Centos 9

Mysql Installation on CentOS 9

Install mysql8 on centOS 9 and integrating with Django