본문 바로가기
IT관련/Python

python의 django를 이용해서 웹을 만들어보자 - 8편 Admin(관리자)편! models & admin view 심화!

728x90

7편 : https://heokknkn.tistory.com/16

 

안녕하세요 !! 

 

이번엔 Admin쪽에서 models에 대해서 더 공부해보겠습니다 !

먼저 ! 저번 7편에서 너무 Admin쪽이 못생기게 나왔습니다 !! 이것들을 좀 다듬고 꾸미면서 가봅시다 ! 

 

@admin.register(models.Community)
class CommunityAdmin(admin.ModelAdmin):

    """Community Admin !"""

    # 진짜 어드민 패널에 뿌려주는것 ! fieldsets
    fieldsets = (
        (
            "Basic Info",
            {
                "fields": (
                    "name",
                    "people",
                )
            },
        ),
        ("Last Details", {"fields": ("owner",)}),
    )

    list_display = (
        "name",
        "people",
        "owner",
    )

저번시간에는 fieldsets만 배워봤는데요 ! 

그러면 Admin에서 목록에서 뿌려주는 항목에 대해서 알아보겠습니다 ! 

여러분도 위에 코드에서 눈치채셨겠지만 ! 

list_display

입니다 ! 

저렇게 써주고 화면을 확인해볼까요? 

위에처럼 제가 써준 필드명들을 확인 할 수 있습니다 !! 

또한 list_display말고도 여러가지가 있는데요 ! 

장고에서는 손쉽게 필터기능도 제공합니다 ! 

저기서 저렇게 이름, 인원, 그룹장들을 각각 클릭이 가능합니다 ! 

즉 컬럼별로 클릭을 하면 오름차순 / 내림차순에 대해서 정렬을 자동으로 해줍니다 ! 코드에서 별 다른 설정없이요 !! 

 

이번에 더 놀라운 기능인 

list_filter

먼저 코드를 봐볼까요?? 

그냥 단순하게 아래와 같이 입력해보겠습니다

list_filter = (
    "name",
    "people",
    "owner",
)

자 그러면 화면을 봐보겠습니다 ! 

저런식으로 제가 쓴 것들로 인해서 필터기능이 생겼습니다 !!! 

한번 눌러보면서 자기가 등록한것들이 알맞게 나오나 봐주세요 !!! 

 

또한 여기서 저번에 공통부분은 core모델을 사용해주시구요 ^^ 

그리고 밑에서 GroupRule에 대해서는 community와 관련이 있는 테이블을 만들 때 사용합니다 ! 

그리고 중요한건 ! 이쪽에서는 꼭 community에 관련된것만 적어주세요 !!! 그렇지 않으면 따로 앱을 만드는게 더더더 괜찮아요 ! 

저렇게 설정하시고 마이그레이트를 꼭 해주세요 ! 필수 !

# 아이템을 가질 때 ! ( Community가 특별하게 뭔가 옵션을 가질 때? 
# 그런데 처음에 데이터베이스에는 영향을 안주려고 사용 )
class AbstractItem(core_models.AbstractTimeStampedModel):

    """Abstract Item"""

    name = models.CharField(max_length=80)

    class Meta:
        abstract = True
        
        
class GroupRule(AbstractItem):

    """GroupRule Model Definition"""

    class Meta:
        verbose_name = "Group Rule"

먼저 위에처럼 등록하고 화면에서 봐볼까요? 

밑에와 같이 등록 ! 

이렇게 하고 Group Rules를 등록 해봅시다 ! 

이건 ManyToManyField를 이용할겁니다 !! 

먼저 화면의 결과를 봅시다 ! 

위에처럼 ManyToManyField를 사용해서 필드명을 입력해주세요 ! 

그리고 위에 처럼 fieldsets과 filter_horizontal에 group_rules를 등록해줍시다 ! 

 

filter_horizontal는 many to relationships에서 많이 사용됩니다 ! 즉 ManyToManyField에서 등록한 것들을 사용하면 아래와 Chosen group rules 이쪽으로 선택한것들을 옮길 수 잇씁니다 ! 

 

결과는 밑에입니다 ! 

저런식으로 설정이 됐습니다 !!! 

한번 등록을 해볼까요??? 참고로 현재 페이지에서 다른 페이지에 있는 녀석들도 등록이 가능합니다 !!!

이게 바로 장고의 힘 !! 너무 똑똑하고 좋습니다 ! 

자 ! 저렇게 등록이 가능합니다 !!! 

한번들 꼭 해보세요 !! 

 

오늘은 여기까지 입니다 !!! 

여기선 일단 실습 위주로 했습니다 ! 

너무 길어지는거 같아고 !!!  그리고 따로 설명하는게 좋을거 같아서 위에서의 중요한 내용은 따로 정리하려고 합니다 !

( 위에서 사용한 내장함수들에 대해서 설명을 좀 짚고 가겠습니다 ! 중요하니까요 !!)

 

미리 말씀드리면 ! 

ForeignKey에서 on_delete부분은 따로 포스팅할게요 !!

728x90