첫 장고 앱 만들기 #7
admin 양식 커스텀하기
from django.contrib import admin
from .models import Question, Choice
# Register your models here.
class QuestionAdmin(admin.ModelAdmin):
fields=['pub_date', 'question_text']
admin.site.register(QuestionAdmin)
admin.site.register(Choice)
admin에서 모델을 보여주는 방식을 바꾸어주었다.
from django.contrib import admin
from .models import Question, Choice
# Register your models here.
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['question_text']}),
('Date information', {'fields':['pub_date']}),
]
admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice)
이런식으로 바꾸어주면, 이제 질문에 대한 세부 페이지에서 여러 항목을 보여주게 된다.
모델 추가하기
from django.contrib import admin
from .models import Question, Choice
# Register your models here.
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['question_text']}),
('Date information', {'fields':['pub_date'], 'classes':['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice)
admin 리스트 커스텀하기
from django.contrib import admin
from .models import Question, Choice
# Register your models here.
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['question_text']}),
('Date information', {'fields':['pub_date'], 'classes':['collapse']}),
]
inlines = [ChoiceInline]
list_display = ('question_text', 'pub_date', 'was_published_recently')
admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice)
list_display로 모델이 display되는 열 순서를 정해준다.
from django.db import models
from django.utils import timezone
from django.contrib import admin
import datetime
# Create your models here.
class Question(models.Model):
def __str__(self):
return self.question_text
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
@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):
def __str__(self):
return self.choice_text
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
models.py 에서 @admin.display의 설정값을 추가해준다.
'Computer Science > BackEnd' 카테고리의 다른 글
장고 DRF #0 | Django REST framework 튜토리얼 (0) | 2022.09.09 |
---|---|
Django API #2 | A simple API with pure Django (0) | 2022.09.08 |
Django API #1 | Setup, Models and Admin (0) | 2022.09.06 |
Django API | #0 Introductions (0) | 2022.09.06 |
장고 공식 문서 #2-1 | Using Django : Models and databases (1) | 2022.09.05 |