티스토리 뷰
[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
- Flutter Clipboard
- 플러터 싱글톤
- Flutter Text Gradient
- Django Firebase Cloud Messaging
- Flutter Spacer
- METAL
- flutter dynamic link
- PencilKit
- Sketch 누끼
- drf custom error
- ribs
- 장고 Custom Management Command
- 장고 URL querystring
- github actions
- SerializerMethodField
- flutter deep link
- Flutter getter setter
- Watch App for iOS App vs Watch App
- Django Heroku Scheduler
- DRF APIException
- Django FCM
- Python Type Hint
- flutter 앱 출시
- flutter build mode
- 구글 Geocoding API
- ipad multitasking
- Flutter 로딩
- 플러터 얼럿
- Dart Factory
- cocoapod
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |