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