Reputation: 21
Everything seems fine to me (so I think anyways). After switching on or off, with the help of switch checkbox, I get a message saying I've successfully on or off my Boolean field. But it doesn't seem to be clicked or unclick in my Django DB. For a better understanding, my codes are below
def PaperFrame(request):
paper_frame = OrderItem.objects.get(id = request.POST['id'])
paper_frame.paper = request.POST['paperchoice'] == 'True'
paper_frame.save()
messages.info(request, "Your chosen paper frame has been saved")
return redirect('business:graphic', slug=paper_frame.id)
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
paper = models.BooleanField(default=False, blank=True)
Templates
<div class="frame_click">
<form action="" method="POST">
{% csrf_token %}
<label class="switch">
<input type="checkbox" id="changeswitch" value="{{paper_frame.paper}}">
<span class="slider round"></span>
</label>
</form>
</div>
jquery functionality
$(document).ready(function(){
$('#changeswitch').change(function(){
$.post("/choosepaper/",{
id: "{{items.id}}",
paperchoice: this.checked,
csrfmiddlewaretoken: '{{csrf_token}}'
});
});
});
Upvotes: 1
Views: 601
Reputation: 121
def PaperFrame(request):
paper_frame= get_object_or_404(OrderItem,id = request.POST['id])
paper_frame.paper= not paper_frame.paper
paper_frame.save()
messages.info(request, "Your chosen paper frame has been saved")
return redirect('business:graphic', slug=paper_frame.id)
Try something like this to flip your boolean every time you click on the check box.
Upvotes: 1