gpt4 book ai didi

添加中间表单后,Django 管理站点操作不起作用

转载 作者:行者123 更新时间:2023-12-02 08:38:38 24 4
gpt4 key购买 nike

我有一个 Django 模型,我想为其添加自定义操作。在此操作中,我需要添加一个带有选择表单(下拉选择)的中间页面。我使用下面的代码来得到这个。

模型类:

class VerificationAdmin(admin.ModelAdmin):
list_display = ('id','asset_code', 'scan_time','credential','status','operator','location','auth_code','product_details')
list_filter = ('status','operator','location')
ordering = ('-scan_time',)
search_fields = ('asset_code',)
actions = ['set_interval']

class AddScanningIntervalForm(forms.Form):
_selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
period_choice=["4 hrs","6 hrs","8 hrs","10 hrs","12 hrs"]
interval = forms.ChoiceField(choices=[(x, x) for x in period_choice])

@csrf_exempt
def set_interval(self, request, queryset):
print "before action"
form = None
if 'apply' in request.POST:
form = self.AddScanningIntervalForm(request.POST)
print "action taken"
if form.is_valid():
interval = form.cleaned_data['interval']
print interval
count = 0
for vObj in queryset:
print vObj.asset_code,vObj.status,interval
at=AlertTable(asset_code=vObj.asset_code,
status=vObj.status,interval=interval)
at.save()
count += 1

self.message_user(request, "Scanning Policy Successfully added to %s assets %s." %count)
return HttpResponseRedirect(request.get_full_path())
if not form:
form = self.AddScanningIntervalForm(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)})
return render_to_response('admin/set_alert.html', {'verifications': queryset,'tag_form': form},context_instance=RequestContext(request))

set_interval.short_description = "Add Periodic Scanning Policy"

添加模板部分:

<!DOCTYPE html>
{% extends "admin/base_site.html" %}

{% block content %}

<p>Select tag to apply:</p>

<form action="" method="post">

{{ tag_form }}
{% csrf_token %}

<p>The scanning policy will be applied to:</p>

<ul>{{ verifications|unordered_list }}</ul>

<input type="hidden" name="action" value="add_tag" />
<input type="submit" name="apply" value="Set Interval" />
</form>

{% endblock %}

它在中间页面上工作正常,但是在中间页面中选择表单中的警报选项之一并单击“设置间隔”按钮后,我得到结果“未选择任何操作”

最佳答案

这个问题有点老了,但可供将来引用;确保中间表单中的“action”输入属性与管理函数名称匹配。在本例中,使用“set_interval”而不是“add_tag”。

此外,POST 上下文必须包含“_selected_action”值,该值应与所选项目 pks 匹配。

关于添加中间表单后,Django 管理站点操作不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com