想知道是否可以在 Wagtail 模型页面中添加一个自定义按钮,这将允许我保存(创建)当前数据字段并移至另一个页面。“保存并添加另一个”按钮已经在 django 中可用,我想在 Wagtail 模型页面上有类似的东西。
谢谢。
想知道是否可以在 Wagtail 模型页面中添加一个自定义按钮,这将允许我保存(创建)当前数据字段并移至另一个页面。“保存并添加另一个”按钮已经在 django 中可用,我想在 Wagtail 模型页面上有类似的东西。
谢谢。
Wagtail 有几种方法可以自定义显示在各种 Wagtail 模型管理视图中的内容。
CreateView
get_context_data
提供create_url
.get_success_url
方法以允许设置 URL 参数next
,如果存在,则下一个 URL 将是 this 而不是默认行为。from wagtail.contrib.modeladmin.views import CreateView
# ... other imports
class CustomCreateView(CreateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['create_url'] = self.create_url
return context
def get_success_url(self):
next = self.request.GET.get('next')
if next:
return next
return super().get_success_url()
class ProductsModelAdmin(ModelAdmin):
create_view_class = CustomCreateView
templates/modeladmin/products/products/create.html
-> 这表示覆盖产品应用程序中产品模型的创建模板。data-next
应该是您的创建 URL 的属性。{% extends "modeladmin/create.html" %}
{% load i18n wagtailadmin_tags %}
{% block form_actions %}
{{ block.super }}
<div class="dropdown dropup dropdown-button match-width">
<button type="submit" class="button button-secondary action-save button-longrunning" data-next="{{ create_url }}" data-clicked-text="{% trans 'Saving…' %}">
{% icon name="spinner" %}<em>{% trans 'Save & add another' %}</em>
</button>
</div>
{% endblock %}
data-next
属性的按钮。action
使用额外的 URL 部分动态更新表单属性。get_success_url
自定义创建类中的方法读取,但只有在成功保存时才会读取,否则您将留在页面上并能够修复错误。{% block extra_js %}
{{ block.super}}
<script>
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('[data-next]').forEach(function(button) {
button.addEventListener('click', function(event) {
var form = document.querySelector('.content-wrapper form');
form.action = form.action + '?next=' + button.dataset.next;
});
});
})
</script>
{% endblock %}