【问题标题】:Django Admin Custom Button Not WorkingDjango Admin 自定义按钮不起作用
【发布时间】:2014-06-08 18:03:58
【问题描述】:

对于我的 Django 自定义用户模型,我有一个 license_key 字段。在管理界面上,为了便于使用,我正在尝试创建一个按钮,它会为您当前正在查看的用户生成一个新的 license_key。这是我覆盖 change_form.html,就像 Django 文档中建议的那样。

/main/templates/admin/main/MyUser/change_form.html:

{% extends "admin/change_form.html" %}
{% load i18n admin_urls %}

{% block form_top %}

    <form class="form-horizontal" method="POST" action="/auth/gen_new_aero_license/">
        {% csrf_token %}

        <div class="control-group">
            <div class="controls controls-row">
                <button type="submit" class="btn btn-primary">
                    Generate new license
                </button>
            </div>
        </div>
    </form>
{% endblock %}

此表单调用我在主视图文件中定义的函数...

main/views.py:

def auth_gen_new_aero_license(request):
    u = MyUser.objects.get(username=request.user.username)
    u.license_key = 'XXX'
    u.save()
    return redirect('/')

这是我对这个新函数的 urls.py 定义,因为它可能会有所帮助:

url(r'^auth/gen_new_aero_license/$', 'main.views.auth_gen_new_aero_license', name='auth_gen_new_aero_license'),

我什至没有调用脚本在 views.py 中生成新的动态 license_key。我只是将其设置为一些随机值以进行测试。

所以问题来了:当我单击按钮时,它只会刷新我所在的当前用户,并且所有值都已被删除,从而给了我错误。就好像它试图删除所有字段然后保存该用户,该用户现在是一个无效用户。

我尝试调试,似乎它甚至从未进入我的views.py 文件中的函数。我还更新了我的 urls.py,所以我的 views.py 中的函数应该是有效的。

我正在尝试做的事情是否可能?或者,还有更好的方法?或者可能出了什么问题。

如果您需要更多说明,请询问!

谢谢

编辑:此外,现在用户页面上没有内置管理按钮,即 - 保存、保存并添加另一个、保存并继续编辑...

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    您想要完成的工作不需要表单。您可以将表单替换为:

    <a href="{% url "auth_gen_new_aero_license" %}" class="btn btn-primary">Generate new licence</a>
    

    【讨论】:

    • 太棒了!非常感谢。那工作得很好:) 你知道如何将该链接定位在“form_top”之外的某个地方吗?比如上面某个部分的更新用户?
    • 您可以在github.com/django/django/blob/master/django/contrib/admin/… 中查看哪些块可用,这也揭示了您之前的问题(您在表单中放置了表单:-))
    • 那么,您知道是否有任何方法可以在特定的 field_set 之后执行此操作,而不是在所有这些之后、替换它们或之前?
    【解决方案2】:

    您尝试过u = MyUser.objects.get(username__iexact=request.user) 吗?

    【讨论】:

    • 刚试过。徒劳无功。我认为找到正确的用户名不一定是问题。
    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 2019-10-28
    • 2021-07-31
    • 2011-06-26
    • 2018-03-13
    • 2021-06-08
    • 1970-01-01
    • 2015-07-05
    相关资源
    最近更新 更多