2016-09-06 32 views
0

我在我的django admin.py中有一個重複的記錄功能,並且在某種程度上它可以工作,但奇怪的是我必須在modelAdmin外部和內部複製此功能...django admin中的重複事件動作

def duplicate_event(ModelAdmin, request, queryset): 
    for object in queryset: 
     object.id = None 
     object.save() 
    duplicate_event.short_description = "Duplicate selected record" 

class ProductAdmin(ImageCroppingMixin, admin.ModelAdmin): 
    model = Product 
    inlines = [CompositionAssociactionAdmin] 
    list_display = ("image_img", "code", "name", "price", "discount", "price_offer", "prompt_delivery", "delivery", "promo", "active") 
    list_editable = ('active',) 
    fields = (
       ("name", "code"), 
       ("price", "discount", "price_offer"), 
       ("color", "material"), 
       ("scarpemisura", "cintureLunghezza"), 
       "size", 
       ("width", "lenght", "depth", "height"), 
       "volume", 
       "descrizione", "album", 
       "image", "slider", "thumb", "thumbdue", "croplibero", 
       ("prompt_delivery", "delivery"), 
       ("slide", "promo"), 
       "tags", "active", "pub_date" 
      ) 
    def duplicate_event(ModelAdmin, request, queryset): 
     for object in queryset: 
      object.id = None 
      object.save() 
     duplicate_event.short_description = "Duplica Record Selezionati" 

    actions = ['duplicate_event'] 

之前,我已經嘗試只是這樣:

def duplicate_event(ModelAdmin, request, queryset): 
    for object in queryset: 
     object.id = None 
     object.save() 
    duplicate_event.short_description = "Duplicate selected record" 

class ProductAdmin(ImageCroppingMixin, admin.ModelAdmin): 
    model = Product 
    inlines = [CompositionAssociactionAdmin] 
    list_display = ("image_img", "code", "name", "price", "discount", "price_offer", "prompt_delivery", "delivery", "promo", "active") 
    list_editable = ('active',) 
    fields = (
       ("name", "code"), 
       ("price", "discount", "price_offer"), 
       ("color", "material"), 
       ("scarpemisura", "cintureLunghezza"), 
       "size", 
       ("width", "lenght", "depth", "height"), 
       "volume", 
       "descrizione", "album", 
       "image", "slider", "thumb", "thumbdue", "croplibero", 
       ("prompt_delivery", "delivery"), 
       ("slide", "promo"), 
       "tags", "active", "pub_date" 
      ) 

    actions = ['duplicate_event'] 

,但我沒有得到任何行動。

所以我試圖在這另一種方式:

class ProductAdmin(ImageCroppingMixin, admin.ModelAdmin): 
    model = Product 
    inlines = [CompositionAssociactionAdmin] 
    list_display = ("image_img", "code", "name", "price", "discount", "price_offer", "prompt_delivery", "delivery", "promo", "active") 
    list_editable = ('active',) 
    fields = (
       ("name", "code"), 
       ("price", "discount", "price_offer"), 
       ("color", "material"), 
       ("scarpemisura", "cintureLunghezza"), 
       "size", 
       ("width", "lenght", "depth", "height"), 
       "volume", 
       "descrizione", "album", 
       "image", "slider", "thumb", "thumbdue", "croplibero", 
       ("prompt_delivery", "delivery"), 
       ("slide", "promo"), 
       "tags", "active", "pub_date" 
      ) 

    def duplicate_event(ModelAdmin, request, queryset): 
     for object in queryset: 
      object.id = None 
      object.save() 
     duplicate_event.short_description = "Duplica Record Selezionati" 

    actions = ['duplicate_event'] 

,我得到這個錯誤: 「duplicate_event」沒有定義全局命名

回答

0

你的縮進級別是錯誤的,它應該是:

class ProductAdmin(ImageCroppingMixin, admin.ModelAdmin): 
    def duplicate_event(ModelAdmin, request, queryset): 
     for object in queryset: 
      object.id = None 
      object.save() 
    duplicate_event.short_description = "Duplica Record Selezionati" 

最後一行,其中分配duplicate_event.short_description,應該是類身體的一部分,不是方法體的一部分。全局功能是不必要的。

+0

似乎工作,非常感謝你 –