a lot of things about category

This commit is contained in:
Parsa Nazer
2025-01-19 21:56:11 +03:30
parent f178754ba6
commit a02bd923c0
9 changed files with 216 additions and 124 deletions
+17 -43
View File
@@ -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)