Django 匹配查询在 AddProduct.objects.get 中不存在(Name=productname[i])



我有一个AddProduct和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)

而我的库存模型如下

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")

我收到了模板中的产品详细信息列表。所以在提交请求后,我得到了这样的打印结果(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()而不是在循环中创建项目

相关内容

最新更新