new fields for order model and update cart serialzier
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.1.2 on 2025-03-11 18:52
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('order', '0012_rename_name_discountcode_code'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='ordermodel',
|
||||
name='cart_total',
|
||||
field=models.BigIntegerField(blank=True, null=True, verbose_name='کل سبد خرید'),
|
||||
),
|
||||
]
|
||||
+13
-5
@@ -50,6 +50,12 @@ class OrderModel(models.Model):
|
||||
is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت")
|
||||
discount_code = models.ForeignKey(DiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف")
|
||||
status = models.CharField(max_length=20, choices=STATUS_CHOICES, verbose_name="وضعیت سفارش")
|
||||
discount = models.BigIntegerField(null=True, blank=True, verbose_name='کل تخقیف')
|
||||
tax = models.BigIntegerField(null=True, blank=True, verbose_name='مالیات')
|
||||
final_price = models.BigIntegerField(null=True, blank=True, verbose_name='قیمت نهایی')
|
||||
cart_total = models.BigIntegerField(null=True, blank=True, verbose_name='کل سبد خرید')
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return f'سفارش: {self.id}'
|
||||
|
||||
@@ -58,9 +64,6 @@ class OrderModel(models.Model):
|
||||
verbose_name_plural = 'سفارشات'
|
||||
|
||||
|
||||
# def total_without_tax(self):
|
||||
# return sum(item.total() for item in self.items.all())
|
||||
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
try:
|
||||
@@ -76,7 +79,7 @@ class OrderModel(models.Model):
|
||||
|
||||
def discount_list(self):
|
||||
items_with_discount = self.items.filter(product__discount__gt=0)
|
||||
discount_amount_dict = {f'{item.product}': item.product.discount for item in items_with_discount}
|
||||
discount_amount_dict = [{'product_name': f'{item.product}', 'discount': f'{item.product.discount}', 'discount_amount': ''} for item in items_with_discount]
|
||||
|
||||
if self.discount_code:
|
||||
|
||||
@@ -90,9 +93,11 @@ class OrderModel(models.Model):
|
||||
|
||||
def discount(self):
|
||||
# total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
||||
# return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||
# discount_percent = self.discount_code.percent
|
||||
# return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||
pass
|
||||
|
||||
|
||||
def tax(self):
|
||||
return self.total_without_tax() * 0.2
|
||||
|
||||
@@ -101,9 +106,12 @@ class OrderModel(models.Model):
|
||||
pass
|
||||
# return self.total_with_discount() + self.tax()
|
||||
|
||||
|
||||
def final_price(self):
|
||||
pass
|
||||
|
||||
def submit_cart(self):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -20,20 +20,27 @@ class OrderItemSerailzier(serializers.ModelSerializer):
|
||||
|
||||
class CartSerializer(serializers.ModelSerializer):
|
||||
items = OrderItemSerailzier(many=True)
|
||||
discount = serializers.SerializerMethodField()
|
||||
product_discount = serializers.SerializerMethodField()
|
||||
cart_total = serializers.SerializerMethodField()
|
||||
tax = serializers.SerializerMethodField()
|
||||
final_price = serializers.SerializerMethodField()
|
||||
discount_code = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
fields = [ 'discount_code', 'items', 'cart_total', 'discount', 'tax', 'final_price']
|
||||
fields = [ 'discount_code', 'items', 'cart_total', 'product_discount', 'tax', 'final_price']
|
||||
|
||||
|
||||
def get_discount_code(self, obj):
|
||||
return obj.discount_code.code if obj.discount_code else None
|
||||
if obj.discount_code:
|
||||
return {
|
||||
'code': obj.discount_code.code,
|
||||
'persent': obj.discount_code.percent,
|
||||
'amount': '100,000 تومان'
|
||||
}
|
||||
else:
|
||||
return None
|
||||
|
||||
def get_discount(self, obj):
|
||||
def get_product_discount(self, obj):
|
||||
return [
|
||||
{
|
||||
'product_name': 'iphone 13',
|
||||
@@ -47,6 +54,9 @@ class CartSerializer(serializers.ModelSerializer):
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
def get_tax(self, obj):
|
||||
return 1000
|
||||
|
||||
|
||||
Reference in New Issue
Block a user