如何覆盖list_editable保存?

时间:2019-01-02 02:33:33

标签: django

class MenuPromoAdmin(admin.ModelAdmin):
    list_editable   = ('position', 'sort_by', 'sort_number')
    list_display    = ('id','product', 'category', 'label', 'sort_by', 'position', 'sort_number')
    raw_id_fields   = ('product', 'category')
    list_filter     = []
    ordering        = ('position','sort_number')
    fieldsets       = [
        "Position and Sorting", {
            'classes': ('grp-collapse grp-open',),
            'fields': ['position', 'sort_by', 'sort_number']
        }),
        "Data", {
            'classes': ('grp-collapse grp-open',),
            'fields': ['url', 'label', 'title', 'css', 'product', 'category']
        }),
    ]
    def save_model(self, request, obj, form, change):
        # do something
        super(MenuPromoAdmin, self).save_model(request, obj, form, change)

admin.site.register(Menu_Promo, MenuPromoAdmin)

我尝试过,但是对于“大量保存”根本不起作用

This one

1 个答案:

答案 0 :(得分:1)

save_model适用于单个对象。对于多个对象,请使用save_formset

示例:

class MenuPromoAdmin(admin.ModelAdmin):
    ...

    def save_formset(self, request, form, formset, change):
        # get all the objects in the formset
        instances = formset.save(commit=False)

        for instance in instances:
            # do something ...

            instance.save()