【问题标题】:django-grappelli multiple "save" button pressesdjango-grappelli 多次“保存”按钮按下
【发布时间】:2014-08-17 09:04:47
【问题描述】:

在我的 django 1.6.5 应用程序中,我使用的是 django-grappelli 管理界面。默认情况下,管理表单具有“保存”和“保存并添加另一个”按钮。但是,发生的情况是,用户有时会“双击”保存按钮,或者他们单击保存按钮,然后在保存完成之前单击“保存并添加另一个”。不幸的是,这似乎在模型上执行了 2 个“保存”事件并在数据库中创建了重复的记录——尽管使用了唯一的“autoinc”键。有没有一种简单的方法可以防止在默认表单上多次触发保存按钮?

【问题讨论】:

    标签: django button duplicates django-grappelli


    【解决方案1】:

    好吧,没有快速的接受者。我丑陋的解决方法是覆盖 grappelli “submit_line.html” 模板,为输入类型提供 id:

    {% load i18n %}
    <footer class="grp-module grp-submit-row grp-fixed-footer">
        <header style="display:none"><h1>Submit Options</h1></header>
    <ul>
        {% if show_delete_link %}
            <li class="grp-float-left"><a href="delete/" class="grp-button grp-delete-link">{% trans "Delete" %}</a></li>
        {% endif %}
        {% if show_save %}
            <li><input id="save" type="submit" value="{% trans 'Save' %}" class="grp-button grp-default" name="_save" /></li>
        {% endif %}
        {% if show_save_as_new %}
            <li><input id="savenew" type="submit" value="{% trans 'Save as new' %}" class="grp-button" name="_saveasnew" /></li>
        {% endif %}
        {% if show_save_and_add_another %}
            <li><input id="saveadd" type="submit" value="{% trans 'Save and add another' %}" class="grp-button" name="_addanother" /></li>
        {% endif %}
        {% if show_save_and_continue %}
            <li><input id="savecont" type="submit" value="{% trans 'Save and continue editing' %}" class="grp-button" name="_continue" /></li>
        {% endif %}
        </ul>
    </footer>
    

    然后我编写了一个(可能编码错误的)jquery 脚本来禁用单击后的按钮。由于他们都提交了表单并重新显示,这似乎有效。

    (function($) {
    
    $(document).ready(function() {
        $('#save').click(function (e) {
            $('#saveadd').click(false);
            $('#savecont').click(false);
            $('#save').click(false);
        })
        $('#saveadd').click(function (e) {
            $('#saveadd').click(false);
            $('#savecont').click(false);
            $('#save').click(false);
        })
        $('#savecont').click(function (e) {
            $('#saveadd').click(false);
            $('#savecont').click(false);
            $('#save').click(false);
        })
    });
    }(django.jQuery));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      相关资源
      最近更新 更多