对于我的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中的函数应该有效。
我想做的甚至可能吗?或者,还有更好的方法?或者可能出现的问题。
如果您需要更多说明,请询问!
由于
编辑:此外,现在没有任何内置管理按钮在用户页面上工作,即 - 保存,保存并添加另一个,保存并继续编辑......
答案 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)
?