Django Models для расчета скидки
Я делаю проект электронной коммерции как мой первый проект на django и у меня есть некоторые проблемы с тем, как рассчитать мою фактическую цену и цену со скидкой, если есть цена со скидкой, поэтому я хочу сделать следующее: если администратор добавляет скидку к продукту, я хочу добавить значение в поле внутри модели под названием цена со скидкой и в этой модели я хочу рассчитать, сколько процентов скидки ввел администратор и какая цена со скидкой будет после применения процента скидки
ps: Английский - мой второй язык, и мне жаль, если вы не смогли понять
tldr : Я хочу вычислить цену и процент скидки и сделать значение этого поля в другом поле в модели под названием цена скидки
вот мои модели для продукта и скидки (пожалуйста, укажите, как я должен улучшить и любые мои ошибки)
from django_extensions.db.fields import AutoSlugField
from django.core.validators import MinValueValidator, MaxValueValidator
# Create your models here.
class Products(models.Model):
product_name = models.CharField(max_length=200, unique=True)
slug = AutoSlugField(populate_from=['product_name'], unique=True)
description = models.TextField(max_length=500, blank=True)
price = models.IntegerField(validators = [MinValueValidator(0)])
discount_price = models.IntegerField(validators = [MinValueValidator(0)],null=True)
image1 = models.ImageField(upload_to='photos/Products')
image2 = models.ImageField(upload_to='photos/Products')
image3 = models.ImageField(upload_to= 'photos/Products')
image4 = models.ImageField(upload_to= 'photos/Products')
stock = models.IntegerField(validators=[MinValueValidator(0)])
Is_available = models.BooleanField(default=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'products'
verbose_name_plural = 'products'
def get_url(self):
return reverse('product_page',args=[self.category.slug, self.slug])
def __str__(self):
return self.product_name
class OfferProduct(models.Model):
product = models.OneToOneField(Products, related_name='category_offers', on_delete=models.CASCADE)
discount = models.IntegerField(validators=[MinValueValidator(0),MaxValueValidator(99)],null=True,default = 0)
is_active = models.BooleanField(default =True)
class Meta:
verbose_name = 'Offer Product'
verbose_name_plural = 'Offer Products'
def __str__(self):
return self.product.product_name
пример : цена : 1000, скидка: 100, поэтому процент составляет 10%
вы можете добавить свойство в OfferProduct:
@property
def discount_percentage(self):
return (100 * discount)/product.price #add your logic
========= model.py =================
class ProductModel(models.Model):
name= models.CharField(max_length=300)
og_price = models.IntegerField()
discount = models.IntegerField()
discounted_price = models.IntegerField(null=True)
sell_price = models.IntegerField(null=True)
created_at = models.DateField(auto_now_add=True)
@property
def discounted_price(self):
return ((self.og_price)*(self.discount))/100
@property
def sell_price(self):
return (self.og_price)-(self.discounted_price)
=========== Выход ============