Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- iupc
- Round 866
- 알고리즘 대회
- E - Hanging Hearts
- 코드포스
- 2022
- 밑바닥부터 시작하는 딥러닝 1
- 인하대 프로그래밍 경진대회
- expand item
- shake!
- django
- Codeforces Round 831 (Div. 1 + Div. 2)
- dart
- 레지스터
- 넥토리얼
- Flutter
- Div. 2
- idpiframe_initialization_failed
- 카카오 API
- 카카오 로그인
- vue3
- 리버싱
- list_display
- 1557
- Hello 2023
- Graph Cost
- 앳코더
- 기본키 변경
- Good Bye 2022: 2023 is NEAR
- vue-google-login
Archives
- Today
- Total
pseong
장고 어드민 페이지 list display에서 foreign의 속성 명시하기 본문
장고 어드민 페이지에서 유저 테이블이 있고, 유저 목표 테이블(외래키로 유저 테이블)이 있는데,
유저 목표 테이블에서 유저 테이블의 유저의 이름과 UUID를 불러오고 싶었다.
여러 가지 검색도 해보고 몇 가지 방법을 시도해 본 결과 가장 좋은 방법을 찾았다.
@admin.register(UserGoal)
class UserGoalAdmin(admin.ModelAdmin):
def get_uuid(self, obj):
return obj.user.id
get_uuid.short_description = 'UUID'
list_display = ('get_uuid')
이런 식으로 사용을 하면 외래키로 존재하는 유저의 속성을 받아올 수 있다.
이전에 사용했던 방법으로는
class User(AbstractUser):
def __str__(self):
return str(self.uuid)
이런 식으로 하고 list_display = ('user') 그 속성을 지정해주면 __str__함수에서 반환되는 값이 지정된다.
이렇게 하면 몇 가지 문제가 발생하는데 일단 다른 속성 값도 받아오고 싶으면
class User(AbstractUser):
def __str__(self):
return str(self.uuid) + ' ' + str(self.name)
이렇게 받아와야 하는데 어드민 페이지에서 보기가 안 좋아지고 가독성도 낮아진다.
따라서 위의 방법을 추천한다.
참고로 외래키의 속성도 어드민 페이지에서 검색하고 싶다면
search_fields = ('user__uuid', 'user__name')
이런 식으로 (속성)__(속성 테이블의 속성) 이렇게 하면 검색 필드에 오류 없이 추가가 된다.
※ list_display 에서는 이런 방법이 안 먹히니 아까 말했던 방법대로 해야한다.
'백엔드 > 장고' 카테고리의 다른 글
[django] pip mysqlclient 에러 해결 방법 (0) | 2022.08.12 |
---|
Comments