Django Соответствующий запрос не существует в AddProduct.objects.get(Name=productname[i])

У меня есть модель AddProduct и StockIn. Когда новый товар закупается у дилера, то все купленные товары добавляются в модель StockIn. А существующие товары обновляются в модели AddProduct. Мои модели AddProduct выглядят следующим образом

class AddProduct(models.Model):
     Name = models.CharField(max_length=120,verbose_name="name")
     Description = models.CharField(max_length=120, verbose_name="description")
     Unit = models.ForeignKey(Unit,on_delete=models.CASCADE,max_length=150,verbose_name='unit')
     purchaseRate = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="purchase rate")
     AvgRate = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="avg rate")
     OpnStock = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="Opening stock")
     ClosingStock = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="closing stock")
     StoreLocation = models.CharField(max_length=120,verbose_name="store location")
     MinStock = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="minimum stock")
    ReOrder = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="reorder")
    MaxStock = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="maxstock")
    Group = models.ForeignKey(ProductGroup,on_delete=models.CASCADE,max_length=150,verbose_name='productgroup')
    CGST = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="CGST")
    SGST = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="SGST")
    IGST = models.DecimalField(max_digits=10, decimal_places=3,verbose_name="IGST")
    Validity = models.IntegerField(verbose_name="validity")
    Updated = models.DateTimeField(auto_now=True)

тем временем моя модель StockIn выглядит следующим образом

class StockIN(models.Model):
    GrnNo = models.IntegerField(verbose_name="GrnNo")
    Date = models.DateTimeField(default=timezone.now)
    Supplier = models.ForeignKey(AddSupplier,on_delete=models.CASCADE,max_length=150,verbose_name='supplier')
   InvoiceNo = models.IntegerField(verbose_name="invoice No")
   InvoiceDate = models.DateTimeField(default=timezone.now, verbose_name="Invoice Date")
   ProductName = models.CharField(max_length=120,verbose_name="productName")
   Quantity = models.IntegerField(verbose_name="quantity")
   Unit = models.ForeignKey(Unit,on_delete=models.CASCADE,max_length=150,verbose_name='unit')
   Rate = models.CharField(max_length=120,verbose_name="rate")
   Value = models.CharField(max_length=120,verbose_name="value")
    DisPer = models.CharField(max_length=120,verbose_name="disper")
    DisValue = models.CharField(max_length=120,verbose_name="disvalue")
    Taxable = models.CharField(max_length=120,verbose_name="taxable")
    CGSTPER = models.CharField(max_length=120,verbose_name="cgstper")
    CGST = models.CharField(max_length=120,verbose_name="cgst")
    SGSTPER = models.CharField(max_length=120,verbose_name="sgstper")
    SGST = models.CharField(max_length=120,verbose_name="sgst")
    IGSTPER = models.CharField(max_length=120,verbose_name="igstper")
    IGST = models.CharField(max_length=120,verbose_name="igst")
    NetAmt = models.CharField(max_length=120,verbose_name="netamt")

Я получаю список деталей продукта из шаблона. Поэтому после отправки запроса я получаю результат print(request.POST) следующим образом.

<QueryDict: {'csrfmiddlewaretoken': ['BKetQA2dIzgRlkLmIJGsZbWB3nzDiQxgR9FHnzN9lmDr86mdEJygUZJ08TORmU3N'], 'GrnNo': ['4'], 'Date': ['2022-03-20'], 'initial-Date': ['2022-03-20 06:09:47'], 'Supplier': ['2'], 'InvoiceNo': ['4444'], 'InvoiceDate': ['2022-03-20'], 'initial-InvoiceDate': ['2022-03-20 06:09:47'], 'productname': ['Safety shoes ','welder'], 'uom': ['0','0'], 'quantity': ['5','6'], 'unit': ['1','1'], 'rate': ['329','220'], 'value': ['1645','1320'], 'disper': ['2','2'], 'disvalue': ['32.9','20.2'], 'taxable': ['0','0'], 'cgstper': ['4','4'], 'cgstvalue': ['64.484','62.2'], 'sgstper': ['4','4'], 'sgstvalue': ['64.484','62.22'], 'igstper': ['4','4'], 'igstvalue': ['64.484','62.22'], 'netamt': ['1612.164.48464.48464.4840','1226.255242'], 'example_length': ['10']}>

Это моя функция purchaseView, где я делаю запрос и получаю ошибку, так как AddProduct, соответствующий запросу, не существует.

def PurchaseView(request):
    stockinform = StockInForm()
    product = AddProduct.objects.all()
    unit = {}
    unitobj = Unit.objects.all()
    for obj in unitobj:
        unit[obj.id]=f'{obj.Name}'


print(request.POST)
if request.method == 'POST':
    grnno = request.POST.getlist('GrnNo')
    date = request.POST.getlist('Date')
    supplier = request.POST.getlist('Supplier')
    supplierinstance = AddSupplier.objects.get(id=supplier[0])
    invoiceno = request.POST.getlist('InvoiceNo')
    invoicedate = request.POST.getlist('InvoiceDate')
    productname = request.POST.getlist('productname')
    uom = request.POST.getlist('uom'),
    quantity = request.POST.getlist('quantity')
    unitname = request.POST.getlist('unit')
    rate = request.POST.getlist('rate')
    value = request.POST.getlist('value')
    disper = request.POST.getlist('disper')
    disvalue = request.POST.getlist('disvalue')
    taxable = request.POST.getlist('taxable')
    cgstper = request.POST.getlist('cgstper')
    cgstvalue = request.POST.getlist('cgstvalue')
    sgstper = request.POST.getlist('sgstper')
    sgstvalue = request.POST.getlist('sgstvalue')
    igstper = request.POST.getlist('igstper')
    igstvalue = request.POST.getlist('igstvalue')
    netamt = request.POST.getlist('netamt')
    productlen = len(productname)
    for i in range(0,productlen):
        unitinstance = Unit.objects.get(id=unitname[i])
        print(productname[i])
        productupdate = AddProduct.objects.get(Name=productname[i])
 

        StockIN.objects.create(GrnNo=grnno[0],
                                Date=date[0],
                                Supplier=supplierinstance,
                                InvoiceNo=invoiceno[0],
                                InvoiceDate=invoicedate[0],
                                ProductName=productname[i],
                                Quantity=quantity[i],
                                Unit=unitinstance,
                                Rate=rate[i],
                                Value=value[i],
                                DisPer=disper[i],
                                DisValue=disvalue[i],
                                Taxable=taxable[i],
                                CGSTPER=cgstper[i],
                                CGST=cgstvalue[i],
                                SGSTPER=sgstper[i],
                                SGST=sgstvalue[i],
                                IGSTPER=igstper[i],
                                IGST=igstvalue[i],
                                NetAmt=netamt[i])
        productupdate.OpnStock = 0
        productupdate.ClosingStock = quantity[i]
        productupdate.purchaseRate = rate[i]
        productupdate.CGST = cgstper[i]
        productupdate.SGST = sgstper[i]
        productupdate.IGST = igstper[i]
        productupdate.save()

return render(request, "stock/purchase.html",{"form":stockinform,"products":product,"unit":unit})

Когда я тестирую django shell, все работает нормально. Но после отправки формы в шаблоне это не работает. Я не знаю почему. Пожалуйста, помогите мне, брат

Поскольку вы запрашиваете модель внутри цикла, я бы предложил проверять значения в журнале или консоли, когда появляется ошибка. Также я бы предложил использовать StockIN.objects.bulk_create() вместо создания элементов в цикле

Вернуться на верх