Nelson Abraham
Nelson Abraham

Reputation: 21

Boolean field is not updating in Django db

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

Answers (1)

prathap sagar
prathap sagar

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

Related Questions