更新django字段的状态- status CHOICES



我有一个模型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
)

相关内容

最新更新