티스토리 뷰
[1] ModelAdmin
장고의 Admin 문서를 보면 ModelAdmin 에 대한 설명이 나옵니다.
ModelAdmin은 admin interface에서 모델을 표현하는 클래스라고 합니다.
admin.py에 이런 식으로 추가해서 쓰면 됩니다.
위 예제처럼 Admin 클래스에 custom values를 define 하지 않는 경우,
보통 이렇게만 씁니다!
[2] ModelAdmin > search_fields
Admin 클래스에 search_fields를 define하면 admin list page에서 search box를 사용할 수 있습니다.
예를들어 이런 Family 모델이 있을 때,
class Family(models.Model):
join_date = models.DateTimeField()
code = models.TextField()
Family의 code 필드로 admin 사이트에서 검색을 하고 싶으면 이렇게 코드를 작성하면 됩니다.
from django.contrib import admin
from . import models
class FamilyAdmin(admin.ModelAdmin):
search_fields = ['code']
admin.site.register(models.Family, FamilyAdmin)
그리고 배포하면 admin 사이트에 이렇게 검색창이 나오고
코드를 기준으로 검색이 잘됩니다! (샘플 데이터임)
search_fields를 여러개 추가하면 어떻게 될까요?
Family의 join_date 필드도 search_fields에 추가해보겠습니다.
from django.contrib import admin
from . import models
class FamilyAdmin(admin.ModelAdmin):
search_fields = ['code', 'join_date']
admin.site.register(models.Family, FamilyAdmin)
그러면 code로도 검색이 되고 join_date로도 검색이 됩니다!
[2.1] ModelAdmin > search_fields (ForeignKey)
아래 형식을 통해 ForeignKey 또는 ManyToManyField 관련 조회를 할 수도 있다고 합니다.
예를들어 author를 참조하는 blog entry가 있을 때, search_fields를 이렇게 define하면
author의 email 주소로 blog entry들을 검색할 수 있게 됩니다.
저의 프로젝트에도 적용해보겠습니다.
Profile 은 Family를 ForeignKey로 참조하고 있습니다.
class Profile(models.Model):
...
family = models.ForeignKey(Family, on_delete=models.SET_NULL, null=True)
admin.py에 아래 코드를 추가합니다.
from django.contrib import admin
from . import models
class ProfileAdmin(admin.ModelAdmin):
search_fields = ['family__code']
admin.site.register(models.Profile, ProfileAdmin)
그러면 Admin > Profile에 search box가 생기고
family code를 입력하면 해당 family code를 ForeignKey로 참조하는
profile 들이 검색이 됩니다! (샘플데이터임)
'🐍 > Django' 카테고리의 다른 글
[Django Channels] 설치 / Tutorial Part 1: Basic Setup (10) | 2023.09.30 |
---|---|
[Heroku] Migrate Django SQLite to PostgreSQL (0) | 2021.08.01 |
[Django] SQL 스크립트 돌리기 -> ORM 으로 (0) | 2021.08.01 |
[Heroku] PostgreSQL DB Plan 업그레이드 (0) | 2021.05.12 |
[Django] 쿼리문 (retrieve) (0) | 2021.03.21 |
- Total
- Today
- Yesterday
- 장고 Custom Management Command
- METAL
- Django Firebase Cloud Messaging
- 플러터 싱글톤
- Flutter 로딩
- PencilKit
- Django Heroku Scheduler
- 플러터 얼럿
- Flutter Clipboard
- flutter build mode
- 장고 URL querystring
- flutter deep link
- 구글 Geocoding API
- flutter dynamic link
- flutter 앱 출시
- Watch App for iOS App vs Watch App
- Flutter getter setter
- cocoapod
- DRF APIException
- github actions
- Django FCM
- Python Type Hint
- ribs
- Flutter Spacer
- Flutter Text Gradient
- Dart Factory
- SerializerMethodField
- drf custom error
- Sketch 누끼
- ipad multitasking
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |