Django管理员自定义按钮不起作用

时间:2014-04-23 18:17:37

标签: python django django-admin

对于我的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 %}

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

主/ 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中的函数应该有效。

我想做的甚至可能吗?或者,还有更好的方法?或者可能出现的问题。

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

由于

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

2 个答案:

答案 0 :(得分:1)

对于您要完成的任务,表格并不是必需的。您可以将表单替换为:

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

答案 1 :(得分:0)

您是否尝试过u = MyUser.objects.get(username__iexact=request.user)