Zeina Almakdisi نشر 29 مارس 2023 أرسل تقرير نشر 29 مارس 2023 مرحبا احاول حساب المسافةبالكيلومتر بين بوستل كود الزبون والبائع في حالة اذا اراد خدمة التوصيل وضرب النتيجة بسعر التوصيل class Delivary(models.Model): .... price=models.PositiveIntegerField( verbose_name=_("Price for 1KM:"),blank=True, null=True,) class Payment(models.Model): .... post_code = models.CharField(max_length=10, ) Delivery_Service=models.BooleanField(_("Delivery_Service?"),default=False,null=True) class Order(models.Model): .... delivery_costs = models.CharField( default=0, max_length=50, blank=True, null=True) قمت بمعالجته ضمن الفيو على الشكل التالي: def payment(request): if Payment.Delivery_Service == True: dist=GeoDistance("in") cal_distance=dist.query_postal_code(Payment.post_code,product_detail.product_vendor.post_code) Order.delivery_costs=cal_distance*Delivary.price # print(delivery_costs,"km") # {{Profile.post_code}} else: Order.delivery_costs==0 العرض: {%if order.delivery_costs%} <tr> <td class="image product-thumbnail"></td> <td> <h6 class="w-160 mb-5"><a class="text-heading">Delivary Service</a></h6></span> </td> <td> <h4 class="text-brand">+{{request.session.currency}}{{order.delivery_costs|floatformat:"2"|currency:request.session.currency}}</h4> </td> </tr> {%endif%} لكن لم تظهر النتيجة ماالخطأ؟؟ 1 اقتباس
0 Mustafa Suleiman نشر 29 مارس 2023 أرسل تقرير نشر 29 مارس 2023 أرجو منك التحقق من النقاط التالية: 1- في الكلاس Payment، يجب تعيين خاصية Delivery_Service على نموذج Payment بدلاً من تعيينها على نسخة Payment. 2- في دالة payment، يجب استخدام نسخة Payment.objects.filter(...) لاسترداد طلب الدفع الذي يتم عملية الدفع له، ولا يمكن الوصول إلى الخاصية Delivery_Service مباشرة من النموذج Payment. 3- في خط Order.delivery_costs==0 ، يجب استخدام عامل الإسناد ( = ) بدلاً من عامل المساواة المزدوج ( == ). 4- يجب حفظ الطلب المحدث بعد تعيين تكلفة التوصيل. بناءً على ما سبق، يمكن تحديث الكود على النحو التالي: def payment(request): if Payment.objects.filter(id=<payment_id>, Delivery_Service=True).exists(): payment = Payment.objects.get(id=<payment_id>) dist = GeoDistance("in") cal_distance = dist.query_postal_code(payment.post_code, product_detail.product_vendor.post_code) delivery_costs = cal_distance * Delivary.objects.first().price Order.objects.filter(payment=payment).update(delivery_costs=delivery_costs) else: Order.objects.filter(payment=payment).update(delivery_costs=0) ويجب استبدال <payment_id> بمعرف الدفع الذي يتم عملية الدفع له. وأخيرًا، في العرض، يجب التحقق من وجود قيمة لتكلفة التوصيل قبل عرضها، لذلك يمكن استبدال {%if order.delivery_costs%} بـ {% if order.delivery_costs is not None and order.delivery_costs != '' %}. بعد ذلك يمكنك التحقق من النتيجة وأخبريني إذا ظهرت مشاكل أخرى. 1 اقتباس
0 Zeina Almakdisi نشر 29 مارس 2023 الكاتب أرسل تقرير نشر 29 مارس 2023 بتاريخ 43 دقائق مضت قال Mustafa Suleiman: ويجب استبدال <payment_id> بمعرف الدفع الذي يتم عملية الدفع له. قمت باستبدالها على الشكل التالي: if Payment.objects.filter(id=payment.id, Delivery_Service=True).exists(): وواجهت الخطأ التالي في المتصفح: علما ان استخدام payment صحيحة اقتباس
0 Mustafa Suleiman نشر 29 مارس 2023 أرسل تقرير نشر 29 مارس 2023 هناك مشكلة في استخدام متغير "payment" في الدالة "payment" بدون تعريفها أولاً، لذلك يجب تعريف "payment" باستخدام "Payment.objects.get(...)" قبل استخدامها في الكود. يمكن استخدام الكود التالي لتجاوز هذه المشكلة: def payment(request): payment_id = <payment_id> try: payment = Payment.objects.get(id=payment_id) except Payment.DoesNotExist: # إذا كان هناك خطأ في الدفع، يجب القيام بالإجراء المناسب هنا return HttpResponse("Payment does not exist") if payment.Delivery_Service: dist = GeoDistance("in") cal_distance = dist.query_postal_code(payment.post_code, product_detail.product_vendor.post_code) delivery_costs = cal_distance * Delivary.objects.first().price Order.objects.filter(payment=payment).update(delivery_costs=delivery_costs) else: Order.objects.filter(payment=payment).update(delivery_costs=0) context = { # تحديد context بشكل مناسب هنا } return render(request, "payment.html", context) وأرجو منك التحقق من النقاط التالية: 1- في تكلفة التوصيل، يجب استخدام نوع الحقل الصحيح لتخزين قيمة التكلفة (بدلاً من CharField): delivery_costs = models.DecimalField(default=0, max_digits=10, decimal_places=2, blank=True, null=True) 2- أيضًا استخدام القيم الحقيقية للأشياء المطلوبة بدلاً من النماذج. على سبيل المثال، يجب استخدام request.POST.get('post_code') بدلاً من Payment.post_code. 3- استخدام مؤشر على كائن Delivary بدلاً من استخدام اسم النموذج، مثل: delivery_price = Delivary.objects.get().price اقتباس
السؤال
Zeina Almakdisi
مرحبا
احاول حساب المسافةبالكيلومتر بين بوستل كود الزبون والبائع في حالة اذا اراد خدمة التوصيل
وضرب النتيجة بسعر التوصيل
class Delivary(models.Model): .... price=models.PositiveIntegerField( verbose_name=_("Price for 1KM:"),blank=True, null=True,) class Payment(models.Model): .... post_code = models.CharField(max_length=10, ) Delivery_Service=models.BooleanField(_("Delivery_Service?"),default=False,null=True) class Order(models.Model): .... delivery_costs = models.CharField( default=0, max_length=50, blank=True, null=True)
قمت بمعالجته ضمن الفيو على الشكل التالي:
def payment(request): if Payment.Delivery_Service == True: dist=GeoDistance("in") cal_distance=dist.query_postal_code(Payment.post_code,product_detail.product_vendor.post_code) Order.delivery_costs=cal_distance*Delivary.price # print(delivery_costs,"km") # {{Profile.post_code}} else: Order.delivery_costs==0
العرض:
لكن لم تظهر النتيجة ماالخطأ؟؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.