a lot of things about category
This commit is contained in:
+17
-43
@@ -5,55 +5,29 @@ from django.urls import reverse
|
||||
import requests
|
||||
|
||||
|
||||
class CategoryModel(models.Model):
|
||||
name = models.CharField(max_length=50, verbose_name='نام دستهبندی')
|
||||
slug = models.SlugField(
|
||||
max_length=50,
|
||||
unique=True,
|
||||
help_text="اسم دسته را برای مسیر به انگلیسی و بدون فاصله وارد کنید"
|
||||
)
|
||||
parent = models.ForeignKey(
|
||||
'self',
|
||||
on_delete=models.CASCADE,
|
||||
related_name='children',
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name='دستهبندی والد'
|
||||
)
|
||||
icon = models.CharField(max_length=100, verbose_name='آیکون دستهبندی', blank=True, null=True)
|
||||
meta_title = models.CharField(
|
||||
max_length=60,
|
||||
verbose_name="عنوان متا",
|
||||
help_text="عنوان متا برای SEO",
|
||||
blank=True,
|
||||
null=True
|
||||
)
|
||||
meta_description = models.TextField(
|
||||
max_length=160,
|
||||
verbose_name="توضیحات متا",
|
||||
help_text="توضیحات متا برای SEO",
|
||||
blank=True,
|
||||
null=True
|
||||
)
|
||||
class MainCategoryModel(models.Model):
|
||||
name = models.CharField(max_length=50, verbose_name='نام')
|
||||
slug = models.SlugField(max_length=50, unique=True, help_text="اسم دسته را برای مسیر به انگلیسی و بدون فاصله وارد کنید")
|
||||
icon = models.ImageField(upload_to='category_model/',verbose_name='آیکون', blank=True, null=True)
|
||||
meta_title = models.CharField(max_length=60, verbose_name="عنوان متا", help_text="عنوان متا برای SEO", blank=True, null=True)
|
||||
meta_description = models.TextField(max_length=160, verbose_name="توضیحات متا", help_text="توضیحات متا برای SEO", blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "دستهبندی"
|
||||
verbose_name_plural = "دستهبندیها"
|
||||
ordering = ['parent__id', 'id'] # Optional: to order by hierarchy
|
||||
verbose_name = "دستهبندی اصلی"
|
||||
verbose_name_plural = "دستهبندیهااصلی"
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('category_detail', kwargs={'slug': self.slug})
|
||||
# def get_absolute_url(self):
|
||||
# return reverse('category_detail', kwargs={'slug': self.slug})
|
||||
|
||||
def get_breadcrumb(self):
|
||||
breadcrumb = []
|
||||
category = self
|
||||
while category:
|
||||
breadcrumb.append(category)
|
||||
category = category.parent
|
||||
return breadcrumb[::-1]
|
||||
|
||||
class SubCategoryModel(MainCategoryModel):
|
||||
parent = models.ForeignKey(MainCategoryModel, on_delete=models.CASCADE, related_name='subcategorys', null=True, blank=True, verbose_name='دستهبندی والد')
|
||||
class Meta:
|
||||
verbose_name = "زیر دستهبندی"
|
||||
verbose_name_plural = "زیر دستهبندیها"
|
||||
|
||||
class DollorModel(models.Model):
|
||||
price = models.FloatField(null=True, blank=True)
|
||||
@@ -113,7 +87,7 @@ class ProductModel(models.Model):
|
||||
meta_keywords = models.CharField(max_length=300, blank=True, null=True, help_text='این فیلد را حتما پر کنید')
|
||||
meta_rating = models.FloatField(default=5, help_text='امتیاز محصول')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='زمان ثبت محصول')
|
||||
category = models.ForeignKey(CategoryModel, blank=True, null=True, on_delete=models.SET_NULL)
|
||||
category = models.ForeignKey(SubCategoryModel, blank=True, null=True, on_delete=models.SET_NULL, related_name='products')
|
||||
def format_discount_price(self):
|
||||
discount_price = int(self.price * (100 - self.discount) / 100)
|
||||
formatted_num = "{:,.0f}".format(discount_price)
|
||||
|
||||
Reference in New Issue
Block a user