我有一个模型django,我想更新我的字段状态选择:
我models.py
class Top(core.BaseModel):
class Status(models.IntegerChoices):
EMPTY = 0,'-----'
SEND_CANCEL = 1, 'Send'
CANCELLED = 2, 'Cancel'
status = models.PositiveSmallIntegerField('Status', choices=Status.choices, default='')
我views.py
class TopUpdateView(core.UpdateView):
template_name = 'top/update_top.html'
form_class = UpdateTopForm
@require_POST
def cancel_status(request, pk, status):
top = get_object_or_404(Top, pk=pk, status=None, user=request.user)
top.status= status.CANCELLED
top.save(update_fields=['status'])
return redirect('top:item-detail')
urls . py
path('top/<pk>/cancel/', views.cancel_status, name='cancel-status'),
模板:
<button class="btn">
<a href="{% url 'top:cancel-status' object.id %}">
Cancel
</button>
所有我想在这里它是更新选择字段状态从空上取消,当我点击按钮。但这行不通((((我知道如何更新和保存简单的字段,但不了解更新选项字段的最佳方式。谁来帮帮我!
您需要提交POST请求,您可以使用:
<form method="POST" action="{% url 'top:cancel-status' object.id %}">
<button type="submit" class="btn">Cancel</button>
</form>
在您看来,您应该使用Top.Status.EMPTY
来设置status
字段:
@require_POST
def cancel_status(request, pk, status):
top = get_object_or_404(Top, pk=pk, status=None, user=request.user)
top.status= Top.Status.CANCELLED
top.save(update_fields=['status'])
return redirect('top:item-detail')
你的Top
模型当然应该有一个status
字段与这些选择:
class Top(core.BaseModel):
class Status(models.IntegerChoices):
EMPTY = 0,'-----'
SEND_CANCEL = 1, 'Send'
CANCELLED = 2, 'Cancel'
status= status = models.PositiveSmallIntegerField(
'Status',
choices=Status.choices,
default=Status.EMPTY
)