我有两个复选框,在两个不同的HTML表单。在我的模板中,当一个复选框被点击时,它的值被提交给视图函数并保存到数据库中,然后该复选框使用if else语句变成一个图标。
表单代码段:
<form id='ISBN_form' action="{%url 'tracker:bookSteps' book_page.id%}" method="POST">
{% csrf_token %}
<div class="columns is-mobile">
{% if book_progress.ISBNsent == 'True' %}
<div class="content column is-5">
<label class="checkbox" dir="rtl">
<i class="fa-solid fa-check has-text-success"></i>
تم التسليم
</label>
</div>
{%else%}
<div class="content column is-5">
<label class="checkbox" dir="rtl">
<input type="checkbox" name="ISBNsent" id="ISBNsent" value="True" onchange="submitCheckbox();">
تم التسليم
</label>
</div>
{%endif%}
</div>
</form>
这工作得很好,值被保存到数据库中,并成为HTML页面中的图标。
但问题是,当我选中一个复选框时,另一个复选框将被取消选中,反之亦然,仅在html模板中,但在数据库中,它将保持选中状态。我不知道问题出在哪里,为什么当我有if else并且正在检查的值来自数据库时会发生这种行为,那么为什么它再次被取消检查?
我的视图功能:
def bookSteps(request,book_id):
book_page = get_object_or_404(Book, pk=book_id)
print(book_page.id)
book_progress = Progress()
book_progress = Progress.objects.get(BookID=book_id)
if request.method == 'POST':
print(request.POST)
if 'ISBNsent' in request.POST:
ISBNsent=request.POST.get("ISBNsent")
book_progress.ISBNsent=ISBNsent
sentDate=datetime.datetime.now()
book_progress.ISBN_sentDate =sentDate.date()
book_progress.save()
#return HttpResponseRedirect (reverse('dashboard'))
elif 'ISBNdelivered' in request.POST:
ISBNdelivered=request.POST.get("ISBNdelivered")
book_progress.ISBNdelivered=ISBNdelivered
deliveredDate=datetime.datetime.now()
book_progress.ISBN_deliveredDate =deliveredDate.date()
book_progress.save()
任何帮助将不胜感激。
谢谢你
1条答案
按热度按时间i7uq4tfw1#
这是因为label不是输入字段。因此,将不会提交标签数据。
在这种情况下,我的建议是
加载标签为隐藏字段的字段。