如何在django布尔字段中使用切换开关? [英] How to use toggle switch with django boolean field?
问题描述
我有一个work_experience模型,其中包含"is_working"字段,当用户仍在公司工作时,该字段为true.在前端,我正在使用拨动开关,并且要在单击时更改布尔字段值"is_working".在django中使用toggle的逻辑应该是什么?
I have a work_experience model which contains "is_working" field which is true when a user is still working at a company. On front end I'm using a toggle switch and I want to change the boolean field value "is_working" on click. What should be the logic to use toggle in django?
拨动开关
HTML
<div style="display:inline-block">
<label>Currently working here?</label>
<label class="switch">
<input type="checkbox">
<span class="slider round"></span>
</label>
</div>
模型
class Work_Experience(models.Model):
job_title = models.CharField(max_length=100, null=True, blank=True)
company = models.CharField(max_length=100, null=True, blank=True)
description = models.CharField(max_length=300, null=True, blank=True)
exp_start_date = models.DateField(null=True, blank=True)
exp_end_date = models.DateField(null=True, blank=True)
is_working = models.BooleanField(default=False)
推荐答案
为 CharField
提供 null = True
参数是一个不好的主意.
It is a bad idea to give null=True
parameter for CharField
.
如果要在单击时更改布尔字段值 is_working
,则需要使用 Jquery .
If you want to change the boolean field value is_working
on click, you need to use Jquery.
我创建了一个名为 toggle
的应用程序,因此您需要将其替换为应用程序的名称.
I created an app named toggle
, so you need to replace it with your app's name.
这是完整的代码
urls.py ::
from django.urls import path
from toggle.views import home, toggle
urlpatterns = [
path('', home),
path('toggle/', toggle),
]
views.py:
from django.shortcuts import render
def home(request):
w, created = Work_Experience.objects.get_or_create(id=1)
return render(request,'home.html', {'workexperiance': w})
from django.http import HttpResponse
from toggle.models import Work_Experience
def toggle(request):
w = Work_Experience.objects.get(id=request.POST['id'])
w.is_working = request.POST['isworking'] == 'true'
w.save()
return HttpResponse('success')
home.html:
<div style="display:inline-block">
<label>Currently working here?</label>
<label class="switch">
<input type="checkbox" id="checkbox" value="{{workexperiance.is_working}}">
<span class="slider round"></span>
</label>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script> <!-- Import Jquery Here-->
<script type="text/javascript">
$(document).ready(function() {
$('#checkbox').change(function() {
$.post("/toggle/", {
id: '{{workexperiance.id}}',
isworking: this.checked,
csrfmiddlewaretoken: '{{ csrf_token }}'
});
});
});
</script>
运行: ./manage.py runserver
并访问: http://localhost:8000
当您点击当前在这里工作吗复选框时,会立即更改布尔值"is_working".
when you click the Currently working here? check box, will instantly change the boolean field value "is_working".
这篇关于如何在django布尔字段中使用切换开关?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!