enter code here models.py
{
views.py
def registered_cust1(request, id):
obj = get_object_or_404(Customer1, id= id)
ob = Customer.objects.all()
checked = request.POST.getlist('checks[]')
c_checked = []
form = RawCustomer1Form()
if request.method == 'POST':
form =RawCustomer1Form(request.POST)
if form.is_valid():
try:
for check in checked :
new_check = get_object_or_404(Menu, name=check)
c_checked.append(new_check)
#user = Customer.objects.get(mobile_number=request.POST['mobile_number'])
print(form.cleaned_data)
product = Customer1.objects.create(**form.cleaned_data)
product.particular.set(*c_checked)
context = { "object": obj, "ob":ob,}
return render(request, 'customer/customers_details.html', context )
except Customer.DoesNotExist:
return render(request, "customer/registered_cust.html", {'error':'no mobile number found'})
else:
print(form.errors)
context = {
'form': form,
"object": obj,
"ob":ob,
}
return render(request, 'customer/customers_details.html', context)
forms.py
class RawCustomer1Form(forms.Form):
mobile_number = forms.CharField(label='Mobile Number', widget=forms.TextInput(attrs={"placeholder": "Customer Number"}))
particular = forms.ModelMultipleChoiceField(queryset=Menu.objects.all(), widget=forms.CheckboxSelectMultiple)
qty = forms.DecimalField()
#rate = forms.DecimalField()
amount_paid = forms.DecimalField()
models.py
class Customer1(models.Model):
mobile_number = models.CharField(max_length=12, unique=False)
particular = models.ManyToManyField(Menu, related_name="particular", blank=True, null=True)
qty = models.DecimalField(decimal_places=1, max_digits=100)
subtotal = models.DecimalField(default=00, decimal_places=2, max_digits=10000)
total = models.DecimalField(default=00, decimal_places=2, max_digits=10000)
amount_paid = models.DecimalField(decimal_places=2, max_digits=10000)
date_cust = models.DateTimeField(default=datetime.now(), blank=True)
#objects = UserManager()
def __str__(self):
return str(self.id)
def get_pdf_bill(self):
return reverse("bill_pdf", kwargs={"id": self.id})
def m2m_changed_cust_receiver(sender, instance, action, *arg, **kwargs):
print(action)
if action == 'post_add' or 'post_remove' or 'post_clear':
products = instance.particular.all()
total = 0
for x in products:
total += x.rate
if instance.subtotal != total:
instance.subtotal = total
instance.save()
m2m_changed.connect(m2m_changed_cust_receiver, sender=Customer1.particular.through)
def pre_save_cust_receiver(sender, instance, *args, **kwargs):
instance.total = instance.subtotal
pre_save.connect(pre_save_cust_receiver, sender=Customer1)
类Customer1(models.Model): mobile_number = models.CharField(max_length = 12,unique = False) 特别= models.ManyToManyField(菜单,related_name =“ particular”,blank = True,null = True) 数量= models.DecimalField(decimal_places = 1,max_digits = 100) 小计= models.DecimalField(默认= 00,小数位数= 2,最大位数= 10000) 总计= models.DecimalField(默认值= 00,十进制位置= 2,最大位数= 10000) amount_paid = models.DecimalField(decimal_places = 2,max_digits = 10000) date_cust = models.DateTimeField(默认= datetime.now(),空白=真) #objects = UserManager()
def __str__(self):
return str(self.id)
def get_pdf_bill(self):
return reverse("bill_pdf", kwargs={"id": self.id})
def m2m_changed_cust_receiver(发送方,实例,操作,* arg,** kwargs): 打印(动作) 如果操作=='post_add'或'post_remove'或'post_clear': 产品= instance.particular.all() 总计= 0 对于x in产品: 总计+ = x.rate 如果instance.subtotal!=总计: instance.subtotal =总数
instance.save()
m2m_changed.connect(m2m_changed_cust_receiver,sender = Customer1.particular.through)
def pre_save_cust_receiver(发件人,实例,* args,** kwargs): instance.total = instance.subtotal
pre_save.connect(pre_save_cust_receiver,sender = Customer1)
}