Merge remote-tracking branch 'origin/main'

This commit is contained in:
marzban-dev
2025-01-28 22:09:18 +03:30
6 changed files with 58 additions and 4 deletions
+3
View File
@@ -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='عکس'),
),
]
+9 -2
View File
@@ -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='قیمت دلار')
+4 -1
View File
@@ -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>