complete base of product and categories
This commit is contained in:
@@ -1,6 +1,58 @@
|
||||
from django.db import models
|
||||
from django.utils.text import slugify
|
||||
from django.contrib.auth.models import User
|
||||
from django.urls import reverse
|
||||
|
||||
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 Meta:
|
||||
verbose_name = "دستهبندی"
|
||||
verbose_name_plural = "دستهبندیها"
|
||||
ordering = ['parent__id', 'id'] # Optional: to order by hierarchy
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
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 ProductModel(models.Model):
|
||||
name = models.CharField(max_length=255)
|
||||
description = models.TextField()
|
||||
|
||||
Reference in New Issue
Block a user