Question: the insert works but multiple data enters, when two data are inserted when I try to update, it does not update the record I just want that when the data is already have record in the database, just update. if not, it will insert def GroupOfProduct(request): global productOrderList relatedid_id = request.POST.get("relatedid") groups = ProductRelatedGroup(id=id) productOrderList=[] try: for products_id in request.POST.getlist("product"): products = Product(id=products_id) insert_update_groupofproduct = ProductRelatedGroupAndProduct( product = products ) insert_update_groupofproduct.save() except ProductRelatedGroupAndProduct.DoesNotExist: for products_id in request.GET.getlist("relatedid"): products = Product(id=products_id) insert_update_groupofproduct = ProductRelatedGroupAndProduct.objects.get(id=products) insert_update_groupofproduct.product = products insert_update_groupofproduct.save() return redirect(relatedgroup)  this is my models.py class Product(models.Model): product = models.CharField(max_length=500) class ProductRelatedGroup(models.Model): category = models.CharField(max_length=500, blank=True) class ProductRelatedGroupAndProduct(models.Model): productrelatedgroup = models.ForeignKey(ProductRelatedGroup,on_delete=models.SET_NULL, null=True, blank=True,verbose_name="Product Related Group") product = models.ForeignKey(Product,on_delete=models.SET_NULL, null=True, blank=True,verbose_name="Product")  UPDATE I tried this, the insert works fine, but the update does not work def GroupOfProduct(request): global productOrderList groups = ProductRelatedGroup(id=id) idproduct = request.POST.get('relatedid') if ProductRelatedGroupAndProduct.objects.filter(id=idproduct).exists(): print("update") for products_id in request.GET.getlist("relatedid"): products = Product(id=products_id) insert_update_groupofproduct = ProductRelatedGroupAndProduct.objects.get(id=products) insert_update_groupofproduct.product = products insert_update_groupofproduct.save() return redirect(relatedgroup) else: productOrderList = [] for isa in request.POST.getlist('relatedid'): productOrderList.append(isa) i = 0 for i in productOrderList: for products_id in request.POST.getlist("product"): products = Product(id=products_id) insert_update_groupofproduct = ProductRelatedGroupAndProduct( productrelatedgroup=groups, product=products ) insert_update_groupofproduct.save() return redirect(relatedgroup) return redirect(relatedgroup)  FLOW OF MY PROGRAM (with picture)  when the admin-user Insert data just (like this)  the batch insert work perfectly fine and when i tried to update (batch update)  only one data updated  and when i tried to insert again (just like this)  no result In Insert <QueryDict: {'csrfmiddlewaretoken': ['F3evgRJwNw4p5XCOVE0qeFhP3gmGG5ay4GBbpoZQg3P5l6TNXHY7KN2lD56s6NCU'], 'relatedid': ['200', '201']}>   This is my html, {% for relatedgroups in relatedgroups %} <input type="hidden" name="relatedid" value="{{relatedgroups.id}}"> {% endfor %} <fieldset class="module aligned "> <div class="form-row field-user_permissions"> <div> <div class="related-widget-wrapper"> <select name="product" id="id_user_permissions" multiple class="selectfilter" data-field-name="Product" data-is-stacked="0"> {% for relatedgroups in relatedgroups %} <option value="{{relatedgroups.product.id}}" selected>{{relatedgroups.product}}</option> {% endfor %} {% for product in products %} <option value="{{product.id}}">{{product.id}}-{{product}}</option> {% endfor %} </select> </div> </div> </div> </fieldset>  when the data is selected or already have data in the database it will shows in Chosen Product box

Answer: Please use update_or_create method. This method if a data is exist then updated the details else newly inserted. Reference: https://www.kite.com/python/docs/django.db.models.QuerySet.update_or_create https://djangosnippets.org/snippets/1114/ def GroupOfProduct(request): group_id = request.POST.get('group') groups = ProductRelatedGroup(id=group_id) idproduct = request.POST.get('product') for products_id in request.POST.getlist("product"): products = Product(id=products_id) ProductRelatedGroupAndProduct.objects.update_or_create(id=idproduct,defaults={'product':products,'productrelatedgroup':groups}) return redirect(relatedgroup)