首页 > 解决方案 > 如何覆盖 list_editable 保存?

问题描述

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)

我试过了,但它根本不适用于“大规模保存”

这个

标签: django

解决方案


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()

推荐阅读