내가 보려고 만든 django 분석 - 2 (init, admin)

sihwan_e·2021년 5월 29일
0

Django

목록 보기
14/21

_ init _.py

_ init__.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 패키지에 포함된 디렉터리에 _ init _.py 파일이 없다면 패키지로 인식되지 않는다.

※ python3.3 버전부터는 init.py 파일이 없어도 패키지로 인식한다(PEP 420). 하지만 하위 버전 호환을 위해 init.py 파일을 생성하는 것이 안전한 방법이다.

admin.py

admin site 을 튜닝하기 위한 곳

order - admin.py

from django.contrib import admin
from .models import Order, OrderProduct
from user.models import User
from product.models import Product

# Register your models here.


class OrderAdmin(admin.ModelAdmin):
    list_display = ('username',
                    'total_price', 'ordered_date',)


class OrderProductAdmin(admin.ModelAdmin):
    list_display = ('order', 'product', 'quantity',)


admin.site.register(Order, OrderAdmin)
admin.site.register(OrderProduct, OrderProductAdmin)

django>contrib>admin>options.py>ModelAdmin 에 들어가서 보면 여러 옵션들이 있는데, list_display 를 사용한 예 이다.

django>contrib>admin>options.py>ModelAdmin
------------------------------------------

class ModelAdmin(BaseModelAdmin):
    """Encapsulate all admin options and functionality for a given model."""

    list_display = ('__str__',)
    이하생략

그냥

admin.site.register(Order)

처럼 모델을 바로 등록 시켜버릴수도있다.
그럼 해당 Order 모델에서

class Meta:
        db_table = 'orders'
        verbose_name = '주문 장바구니'
        verbose_name_plural = '주문 장바구니'

로 등록되어진 주문 장바구니라는 이름으로만 등록이 되어진다.

그리고 공부 중에 새로운 방법을 배웠는데 이러한 방식이 더 일반적으로 잘 쓰인다고 한다.

원래 사용했던 방식과 비교를 해보자.

@admin.register(OrderProduct)
class OrderProductAdmin(admin.ModelAdmin):
    list_display = ['order', 'product', 'quantity']
    list_display_links = ['order', 'product']

vs

class OrderProductAdmin(admin.ModelAdmin):
    list_display = ('order', 'product', 'quantity',)


admin.site.register(OrderProduct, OrderProductAdmin)

list_display_links 옵션을 사용하면 컬럼값에 링크를 생성하여 준다. 따로 지정하지않으면 첫번쨰 필드만 링크가 생성된다.

그 외에는

list_display : Admin 목록에 보여질 필드 목록
list_display_links : 목록 내에서 링크로 지정할 필드 목록 (이를 지정하지 않으면, 첫번째 필드에만 링크가 적용)
list_editable : 목록 상에서 수정할 필드 목록
list_per_page : 페이지 별로 보여질 최대 갯수 (디폴트 : 100)
list_filter : 필터 옵션을 제공할 필드 목록
actions : 목록에서 수행할 action 목록

와 같은 옵션을 사용 할 수있다.

profile
Sometimes you gotta run before you can walk.

0개의 댓글