Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Django - update booleanField via List View

Tags:

python

django

Is there any way how to update booleanField in the list view? In list view I have listed all my orders and I need to mark which are done and which are not done. I know I can update it via UpdateView, but that is not user friendly because I have to leave the listview page.

models.py

class Order(models.Model):
    ...
    order = models.CharField(max_length = 255)
    completed = models.BooleanField(blank=True, default=False)

views.py

class OrderIndex(generic.ListView):

   template_name = "mypage.html"
   context_object_name = "orders"

   def get_queryset(self):
      return Order.objects.all().order_by("-id")

mypage.html

{% extends "base.html" %}
{% block content %}
{% for order in orders%}
   User: {{ order.user}} | Completed: {{order.completed}} <input 
   type="checkbox">
{% endfor %}
<input type="submit">
{% endblock %}

I am quite new to the django framework and have no idea how to make it work.

like image 510
pipikej Avatar asked Sep 22 '26 20:09

pipikej


1 Answers

like this should look you javascript

const updateField = (order_id) =>{
    var form = new FormData();

    form.append('order_id', order_id);

    fetch('{% url "url_updateField" %}', {
      method:'post',
      body:form,
      mode:'cors',
      cache:'default',
      credentials:'include',
    }).then((response)=>{
      console.log('field update as well')
   })
})

just add a function to your button on envent onclick

{% extends "base.html" %}
{% block content %}
{% for order in orders%}
   User: {{ order.user}} | Completed: {{order.completed}} <input 
   type="checkbox" onclick="updateField({{order.pk}})">
{% endfor %}
<input type="submit">
{% endblock %}

then in your view you should have the below view to process the request

def updateField(request):
    print(request.body.get('order_id'))
    #you should update you model field here 
    return JsonResponse({'ok':True}, status=200)

This will help you How to work with ajax request with django

like image 85
Bob White Avatar answered Sep 24 '26 09:09

Bob White