更新 django 字段中的状态 - status CHOICES
Posted
技术标签:
【中文标题】更新 django 字段中的状态 - status CHOICES【英文标题】:Update status in django field - status CHOICES 【发布时间】:2021-10-06 00:11:55 【问题描述】:我有一个模型 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')
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>
我在这里想要的只是当我点击按钮时从 EMPTY on CANCELED 更新 CHOICE 字段状态。但它不起作用(((( 我知道如何更新和保存简单字段,但不了解在视图中更新选项字段的最佳方式。任何人请帮助我!
【问题讨论】:
您能否提供更多有关您的Top
模型的详细信息?尤其是存储状态的字段?
【参考方案1】:
你需要提交一个 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 字段中的状态 - status CHOICES的主要内容,如果未能解决你的问题,请参考以下文章