Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -13,6 +13,7 @@ class ProductModelAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||
import_form_class = ImportForm
|
||||
export_form_class = ExportForm
|
||||
|
||||
readonly_fields = ('slug', )
|
||||
|
||||
compressed_fields = True
|
||||
warn_unsaved_form = True
|
||||
@@ -31,6 +32,7 @@ class MainCategoryModelAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||
import_form_class = ImportForm
|
||||
export_form_class = ExportForm
|
||||
|
||||
readonly_fields = ('slug', )
|
||||
|
||||
compressed_fields = True
|
||||
warn_unsaved_form = True
|
||||
@@ -46,6 +48,7 @@ class SubCategoryModelAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||
import_form_class = ImportForm
|
||||
export_form_class = ExportForm
|
||||
|
||||
readonly_fields = ('slug', )
|
||||
|
||||
compressed_fields = True
|
||||
warn_unsaved_form = True
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.1.2 on 2025-01-28 17:48
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('product', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='subcategorymodel',
|
||||
old_name='icon',
|
||||
new_name='image',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.1.2 on 2025-01-28 17:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('product', '0002_rename_icon_subcategorymodel_image'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='subcategorymodel',
|
||||
name='icon',
|
||||
field=models.ImageField(blank=True, null=True, upload_to='category_model/', verbose_name='آیکون'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subcategorymodel',
|
||||
name='image',
|
||||
field=models.ImageField(blank=True, null=True, upload_to='category_model/', verbose_name='عکس'),
|
||||
),
|
||||
]
|
||||
@@ -19,13 +19,16 @@ class MainCategoryModel(models.Model):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
# def get_absolute_url(self):
|
||||
# return reverse('category_detail', kwargs={'slug': self.slug})
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.slug:
|
||||
self.slug = slugify(self.name, allow_unicode=True)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
class SubCategoryModel(models.Model):
|
||||
name = models.CharField(max_length=50, verbose_name='نام')
|
||||
slug = models.SlugField(max_length=50, unique=True, help_text="اسم دسته را برای مسیر به انگلیسی و بدون فاصله وارد کنید")
|
||||
image = models.ImageField(upload_to='category_model/',verbose_name='عکس', blank=True, null=True)
|
||||
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)
|
||||
@@ -38,6 +41,10 @@ class SubCategoryModel(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.slug:
|
||||
self.slug = slugify(self.name, allow_unicode=True)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
class DollorModel(models.Model):
|
||||
price = models.FloatField(null=True, blank=True, verbose_name='قیمت دلار')
|
||||
|
||||
@@ -37,11 +37,14 @@ class CommentSerializer(serializers.ModelSerializer):
|
||||
|
||||
class SubCategorySerializer(serializers.ModelSerializer):
|
||||
product_count = serializers.SerializerMethodField()
|
||||
parent = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = SubCategoryModel
|
||||
fields = ['id', 'name', 'slug','icon', 'meta_title', 'meta_description', 'product_count', 'show']
|
||||
fields = ['id', 'name', 'slug','icon', 'meta_title', 'meta_description', 'product_count', 'show', 'parent']
|
||||
def get_product_count(self, obj):
|
||||
return obj.products.count()
|
||||
def get_parent(self, obj):
|
||||
return obj.parent.name
|
||||
|
||||
|
||||
class MainCategorySerializer(serializers.ModelSerializer):
|
||||
|
||||
@@ -33,4 +33,4 @@ provide("isOpen", {
|
||||
|
||||
<ChatBoxContainer :isOpen="isOpen" />
|
||||
|
||||
</template>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user