【问题标题】:POST request from submit button in admin log来自管理日志中提交按钮的 POST 请求
【发布时间】:2016-05-13 16:37:55
【问题描述】:
class CustomAdmin(admin.ModelAdmin):
    exclude = ['is_external']

@admin.register(Submission)
class SubmissionAdmin(CustomAdmin):
    list_display = ('is_active', 'activate')

    def activate(self, obj):
        from django.utils.safestring import mark_safe
        if not obj.is_active:
            return mark_safe('<button name="Activate" button type="submit" class="btn" '
                             'value="%s">Activate</button>' % escape(obj.id))
        else:
            return mark_safe('<button name="Activate" button type="submit" '
                             'value="%s" disabled>Activate</button>' % escape(obj.id))

我在一些管理日志列表中激活了一个按钮。单击此按钮后,它会提交整个列表并将 POST 请求发送到具有激活属性和所选行 ID 的同一页面,我想处理该 POST。我可以在这个 SubmissionAdmin 类中执行此操作吗?如何操作?

【问题讨论】:

    标签: django python-2.7 django-admin


    【解决方案1】:

    我认为您可以通过创建自定义动作

    来实现这一点
    class CustomAdmin(admin.ModelAdmin):
        exclude = ['is_external']
    
    @admin.register(Submission)
    class SubmissionAdmin(CustomAdmin):
        list_display = ('is_active')
    
        def activate(self,request,queryset):
              for obj in queryset:
                  #you can add the activate logic here
    
        def deactivate(self,request,queryset):
              for obj in queryset:
                  #you can add the de-activate logic here
    
        activate.short_description = "Activate"
        activate.short_description = "De-Activate"
        actions = [activate,deactivate]
    

    https://docs.djangoproject.com/en/1.9/ref/contrib/admin/actions/

    【讨论】:

    • 谢谢,但操作在左上角的列表中?它需要是每一行中的按钮;/
    • 我认为你应该为此使用ajax
    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 2012-07-05
    • 2017-11-19
    • 2018-09-14
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多