django - 更新 django 字段中的状态 - status CHOICES
问题描述
我有一个模型 django,我想更新我的字段状态选择:
我的模型.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='')
我的意见.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')
网址.py
path('top/<pk>/cancel/', views.cancel_status, name='cancel-status'),
模板:
<button class="btn">
<a href="{% url 'top:cancel-status' object.id %}">
Cancel
</button>
我在这里想要的只是当我点击按钮时从 EMPTY on CANCELED 更新 CHOICE 字段状态。但这是行不通的((((我知道如何更新和保存简单字段,但不了解更新选项字段的最佳方式。任何人请帮助我!
解决方案
你需要提交一个 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
)
推荐阅读
- django - 被 DjangoRestFramework 难倒
- python - python random IndexError:列表索引超出范围
- r - 管道工部署如何使用 SSH 进行身份验证
- postman - 在 Postman 中验证 UTC 日期
- reactjs - 从同一个项目的另一个反应链接返回时,componentDidMount useEffect 挂钩是否运行?
- angular - 未经授权的 JWT 身份验证
- python - 使用 Flask Python 将点几何插入 PostGIS
- java - 如何对重试期间使用新的 InputStream 进行单元测试?
- c++ - VS2012 与 VS2019 的兼容性
- uart - STM32F4 UART HAL 驱动程序'将字符串保存在变量缓冲区中'