我想使用一个按钮来更新我的一个模型(PieceInstance)中的字段(声明人),然后将用户重定向到他可以看到所有声明的实例的页面。
代码如下:
按钮: (遍历所有实例)
<a target="_blank"
method="POST"
class="button"
href="{% url 'claim' pk=instance.pk %}">
Claim
</a>
views.py
def claim(request, pk):
piece_instance = PieceInstance.objects.get(pk=pk)
piece_instance.claimant = request.user
piece_instance.save()
return HttpResponseRedirect(reverse('my-claimed'))
urls.py
urlpatterns += [
path('myclaimedpieces/<uuid:pk>', views.claim, name='claim'),
]
它运行平稳,但是不会更新模型中的字段,因此重定向页面上的内容仍然为空。
非常感谢您的帮助!
答案 0 :(得分:0)
对我来说看起来不错。唯一的事情是在method
标记中使用<a>
毫无意义。您应该使用纯链接:
<a target="_blank"
class="button"
href="{% url 'claim' pk=instance.pk %}">
Claim
</a>
或使用带有真实按钮(而不是链接格式为按钮的链接)的表单:
<form method="POST" action="{% url 'claim' pk=instance.pk %}">
<button type="submit"
class="button">
Claim
</button>
</form>