我有一个名为Inventory的django表
型号.py
class ClientInventory(models.Model):
product_short_code = models.CharField(max_length=500, default=0, null=True)
product_quantity = models.IntegerField(default=0, null=True)
product_owner = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='inventory_owner')
每当一个名为delivereddocket的表单被填充时,我想更新这个清单,这是我的观点
视图.py
@method_decorator([login_required, employee_required], name='dispatch')
class DeliveredDocketFormView(CreateView):
model = DeliveredDocket
fields = "__all__"
template_name = 'packsapp/employee/docketDeliveredForm.html'
def form_valid (self, form):
product = form.save(commit=False)
product.save()
data = form.cleaned_data
ClientInventory.objects.update_or_create(product_short_code=data["product1"], product_quantity =data["product1_recieved_quantity"],
product_owner = data['created_for'])
ClientInventory.objects.update_or_create(product_short_code=data["product2"],
product_quantity=data["product2_recieved_quantity"],
product_owner=data['created_for'])
ClientInventory.objects.update_or_create(product_short_code=data["product3"],
product_quantity=data["product3_recieved_quantity"],
product_owner=data['created_for'])
ClientInventory.objects.update_or_create(product_short_code=data["product4"],
product_quantity=data["product4_recieved_quantity"],
product_owner=data['created_for'])
ClientInventory.objects.update_or_create(product_short_code=data["product5"],
product_quantity=data["product5_recieved_quantity"],
product_owner=data['created_for'])
ClientInventory.objects.update_or_create(product_short_code=data["product6"],
product_quantity=data["product6_recieved_quantity"],
product_owner=data['created_for'])
ClientInventory.objects.update_or_create(product_short_code=data["product7"],
product_quantity=data["product7_recieved_quantity"],
product_owner=data['created_for'])
ClientInventory.objects.update_or_create(product_short_code=data["product8"],
product_quantity=data["product8_recieved_quantity"],
product_owner=data['created_for'])
messages.success(self.request, 'The Delivered Docket was created with success!')
return redirect('employee:delivered_docket_table')
我怎样才能减少ORM调用的次数,因为这感觉不对
这是表单数据:
{'sender': <Warehouse: Yantra Gurgaon Warehouse>, 'pending_docket_list': <AllotmentDocket: Yantra Gurgaon Warehouse::client::2019-12-04>, 'material_received_date': datetime.date(2019, 12, 4), 'pod
_received': 'Yes', 'product1': 'Vipin', 'product1_alloted_quantity': 56, 'product1_recieved_quantity': 56, 'product2': None, 'product2_alloted_quantity': None, 'product2_recieved_quantity': None, 'product3': No
ne, 'product3_alloted_quantity': None, 'product3_recieved_quantity': None, 'product4': None, 'product4_alloted_quantity': None, 'product4_recieved_quantity': None, 'product5': None, 'product5_alloted_quantity':
None, 'product5_recieved_quantity': None, 'product6': None, 'product6_alloted_quantity': None, 'product6_recieved_quantity': None, 'product7': None, 'product7_alloted_quantity': None, 'product7_recieved_quanti
ty': None, 'product8': None, 'product8_alloted_quantity': None, 'product8_recieved_quantity': None, 'created_on': datetime.datetime(2019, 12, 4, 18, 35, 29, tzinfo=<UTC>), 'created_for': <Client: client>, 'rema
rks': '65'}
另外,当我在表单中输入与我之前输入的相同的短名称,而不是修改它时,它会创建一个新条目。 我想要的是,每当有人输入相同的短名称,那么它应该总和新的数量与以前的数量,我怎么做呢
为了减少ORM调用的数量,为什么不这样做-
对于您的另一个问题,我建议首先检查您是否有该产品,如果有,然后修改它,而不是再次创建它
相关问题 更多 >
编程相关推荐