티스토리 뷰
이제 관리 페이지에 표시되는 내용을 조금 더 보기 좋게 수정하는 것을 진행해 보겠습니다.
기존에 catalog/admin.py에 등록했던 코드를 지우거나 주석처리합니다.

아래와 같이 관리자 class를 만들고 관리자 class를 등록합니다.
class AuthorAdmin(admin.ModelAdmin):
pass
class BookAdmin(admin.ModelAdmin):
pass
class BookInstanceAdmin(admin.ModelAdmin):
pass
admin.site.register(Author, AuthorAdmin)
admin.site.register(BookInstance, BookInstanceAdmin)
각 관리자 class에 list view에 무엇을 표시할 지 정의합니다.
한 가지 주의할 점은 Book의 Field 중 genre는 ManyToMany 타입입니다.
그래서 list view에 표시하면 성능이 안 좋아집니다.
그래서 표시하기 위한 함수를 정의해야 합니다.
class AuthorAdmin(admin.ModelAdmin):
list_display = ('last_name','first_name','date_of_birth','date_of_death')
class BookAdmin(admin.ModelAdmin):
list_display = ('title','author','display_genre')
class BookInstanceAdmin(admin.ModelAdmin):
list_display = ('status','due_back')
catalog/models.py에서 Book class 안에 display_genre라는 함수를 추가합니다.
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)
summary = models.TextField(max_length=1000, help_text='Enter a brief description of the book')
isbn = models.CharField('ISBN', max_length=13, help_text='13 Character ISBN number')
genre = models.ManyToManyField(Genre, help_text='Select a genre for this book')
def display_genre(self):
return ', '.join(genre.name for genre in self.genre.all()[:3])
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('book-detail', args=[str(self.id)])
다 수정했다면 migration과 서버를 실행합니다.
admin페이지로 접속해서 장르 페이지로 이동하면 아래와 같이 수정한 field로 표시되는 것을 확인할 수 있습니다.
그리고 한가지 확인할 수 있는 내용이 다른 field와 다르게 이름을 정의했던 date_of_dead field는 정의한 이름으로 표시되는 것을 확인할 수 있습니다.

book 페이지로 이동하면 정의한 field로 표시되는 것을 확인할 수 있습니다.
그리고 Genre는 설정한 것과 같이 최대 3개까지만 표시되는 것을 확인할 수 있습니다. (예제에서 저는 4개의 장르를 선택했습니다.)

이번에는 detail 화면을 수정하는 것을 진행할 것입니다.
BooksInstanceInline class가 추가되었습니다.
fields가 추가되었습니다.
fieldsets가 추가되었습니다.
class BooksInstanceInline(admin.TabularInline):
model = BookInstance
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')]
class BookAdmin(admin.ModelAdmin):
list_display = ('title','author','display_genre')
inlines = [BooksInstanceInline]
class BookInstanceAdmin(admin.ModelAdmin):
list_display = ('book','status','due_back','id')
fieldsets = (
(None, {
'fields': ('book','imprint','id')
}),
('Availability', {
'fields': ('status','due_back')
}),
)
admin.site.register(Author, AuthorAdmin)
admin.site.register(Book, BookAdmin)
admin.site.register(BookInstance, BookInstanceAdmin)
일단 적용한 후 Authors 페이지로 가서 저자 하나를 선택합니다.
그러면 표시되는 순서가 fields에 정의한 순서대로 표시되는 것을 확인할 수 있습니다.
그리고 튜플로 정의한 것은 가로로 나란히 표시되는 것을 확인할 수 있습니다.

BookInstance 도 수정 페이지로 들어가봅니다.
그러면 fieldsets에 정의한 순서대로 나오고 있으며
2개로 구분해서 표시되는 것을 확인할 수 있습니다.

Book 수정 페이지도 접속합니다.
그러면 Book 수정 항목 밑에 BookInstance도 같이 표시되는 것을 확인할 수 있습니다.

이제 list view에 filter를 추가하는 법을 실습할 것입니다.
BookInstance class에 list_filter를 추가하였습니다.
class BooksInstanceInline(admin.TabularInline):
model = BookInstance
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')]
class BookAdmin(admin.ModelAdmin):
list_display = ('title','author','display_genre')
inlines = [BooksInstanceInline]
class BookInstanceAdmin(admin.ModelAdmin):
list_display = ('book','status','due_back','id')
list_filter = ('status','due_back')
fieldsets = (
(None, {
'fields': ('book','imprint','id')
}),
('Availability', {
'fields': ('status','due_back')
}),
)
admin.site.register(Author, AuthorAdmin)
admin.site.register(Book, BookAdmin)
admin.site.register(BookInstance, BookInstanceAdmin)
접속해서 확인하면 아래와 같이 우측에 filter가 추가된 것을 확인할 수 있습니다.

여기까지 관리자 페이지를 변경하는 것을 실습하였습니다.
출처 - https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Admin_site
Django Tutorial Part 4: Django admin site - Learn web development | MDN
That's it! You've now learned how to set up the administration site in both its simplest and improved form, how to create a superuser, and how to navigate the admin site and view, delete, and update records. Along the way you've created a bunch of Books, B
developer.mozilla.org
- Total
- Today
- Yesterday
- 캐시몽
- libsystemd
- 앱테크
- packet sequence number wrong
- 헤이플
- MariaDB
- F21VDD
- max size
- mediumblob
- 최대 크기
- F21VDZ
- F21VDN
- OLED65B9GNA
- OLED64B9CNA
- 고래문화마을
- F21VBT
- F21VDU
- LG티비
- OLED64B9BNA
- F21VDT
- pymysql
- Ubuntu 14.04
- OLED65B9
- column 추가
- blob
- F21VDV
- longblob
- OLED
- lgtv
- insert column
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |