Django adminsite에 작업 추가

3239 단어 Django
djangoadmin 사이트를 사용하기 위해 mysite.appname.admin 내에admin 사이트에서 관리하고자 하는 모델과 관리자 클래스 (의 하위 클래스) 를 등록합니다.
사용자 정의 관리자 클래스의 하위 클래스를 통해adminsite의 행동을 변경할 수 있습니다.여기에 특정 동작을 추가하는 방법을 소개했다.
## アクションを実行した場合の処理
def update_lnglat(modeladmin, request, queryset):
    """Shopクエリセットを元に、Shopモデルの位置情報を更新する。
    """
    for shop in queryset.all():
        # 位置情報を更新する
        update_shop_lnglat(shop)

# アクションに表示する場合の名前
update_lnglat.short_description = _(u"Update shop location info by address")

## Admin
class ShopAdmin(admin.ModelAdmin):
    list_display = ('name', 'region', 'slug', 'email', 'phone', 'fax', 'lnglat')

    # callableなオブジェクトを渡す
    actions = [update_lnglat]

## admin siteへの登録
admin.site.register(Shop, ShopAdmin)
ShopAdmin 클래스의 actions 속성에 정의된 함수는 django 관리 화면에 표시됩니다.코드에서 정의short_description하면 표시할 수 있습니다.

함수는 다음과 같은 매개 변수를 전달한다.
  • ModelAdmin(이 경우 ShopAdmin)
  • HttpRequest
  • QuerySet
  • 세 번째는 선택한 객체를 포함하는 QuerySet입니다.이를 순환시키면 "검사한 대상에 대해 특정한 처리를 할 수 있다."
    참고 자료
  • Django Admin actions
  • 좋은 웹페이지 즐겨찾기