【发布时间】:2022-01-25 22:05:32
【问题描述】:
以下代码(仅用于学习 Django)允许使用 HTML 按钮将用户的工单标记为“已解决”。单击按钮时,ticked_solved 设置为 True,ticket_waiting 设置为 False。
这在我测试过的模板中也可以识别。但随后在仪表板中,对象也必须更改为 False/True,正如您在屏幕截图中看到的那样,情况并非如此。
我用一个表格来做这一切,这可能也不是最聪明的选择。
\\models.py
class Ticket(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
default=None,
null=True,
on_delete=models.CASCADE,
)
title = models.CharField(max_length=200)
description = models.TextField()
ticket_waiting = models.BooleanField(default=True)
ticket_solved = models.BooleanField(default=False)
def __str__(self):
return str(self.title)
\\forms.py
class TicketSolved(forms.Form):
delete = forms.CharField(
label='', max_length=0).widget = forms.HiddenInput()
\\views.py
def ticket_system_view(request, id):
obj = Ticket.objects.get(id=id)
form2 = TicketSolved(request.POST)
if request.method == 'POST':
if form2.is_valid():
obj.ticket_waiting = False
obj.ticket_solved = True
return render(request, 'ticket-system.html', {'obj': obj, 'form2': form2})
\\.html
{% if obj.user != request.user %}
<p>Page Not Found</p>
{% else %}
<p>Ticket ID {{obj.id}}</p>
{{ obj.title }} {{ obj.description }} {% endif %}
<br></br>
<form method="POST">
{% csrf_token %} {{ form2 }}
<button type="submit">Status to Solved</button>
</form>
----Just to test if it works:
{% if obj.ticket_waiting == True %}
<p>Waiting for Reply.</p>
{% else %}
<p>Ticket solved.</p>
{% endif %}
\\urls.py 如果需要
path('dashboard/user/ticket/<int:id>/',
ticket_system_view, name="view_ticket"),
以及点击按钮后的屏幕截图 screenshot
您知道为什么管理仪表板中的复选框没有调整吗?
【问题讨论】: