【问题标题】:"No action selected" says Django-admin when deleting objects删除对象时,Django-admin 说“未选择任何操作”
【发布时间】:2017-07-11 11:33:12
【问题描述】:

我创建了一个包含几个字段的简单模型产品,然后转到admin.py。我已经注册了Product,创建了一些字段list_editable,并创建了一个新动作duplicate

def duplicate(modeladmin, request, queryset):
    number = int(request.POST['number'])
    product = queryset.first()
    for i in xrange(number):
        product.id = None
        product.save()

class DuplicateActionForm(ActionForm):
    number = forms.IntegerField()

class ProductAdmin(admin.ModelAdmin):
    list_display = ('id','name','color','memory','ga_url','gs_url',)
    list_editable = ('color','memory','name','ga_url','gs_url',)
    action_form = DuplicateActionForm
    # actions = [duplicate,]

admin.site.register(Product,ProductAdmin)

ProductAdmin 类的actions 属性没有被注释时,我可以复制对象。问题是我无法删除它们。当我检查行并选择delete selected 时,它显示:No action selected

这是由以下行引起的:

action_form = DuplicateActionForm

因为如果actions = [duplicate,]被评论,我无法正确删除对象,直到我评论action_form = DuplicateActionForm

你知道问题出在哪里吗?

【问题讨论】:

  • 如何将duplicate 的函数放入ProductAdmindef duplicate(self, request, queryset): 以及duplicate.allow_tags = True?和actions = [ 'duplicate', ]
  • @SancaKembang 不幸的是,这没有帮助。
  • 您不能删除重复的产品或其中任何一个?

标签: python django django-admin django-1.10


【解决方案1】:

您应该在自定义表单字段中添加required=False。之后,一切都会按预期进行。

class DuplicateActionForm(ActionForm):
    number = forms.IntegerField(required=False)

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 2010-12-20
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2021-01-11
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多