change color image video field and place it in product varient model

This commit is contained in:
Parsa Nazer
2025-02-11 23:02:08 +03:30
parent 4234418e51
commit d8a588ca86
5 changed files with 157 additions and 36 deletions
+43 -30
View File
@@ -77,11 +77,24 @@ class AttributeValueAdmin(ModelAdmin, ImportExportModelAdmin):
"widget": ArrayWidget,
}
}
def get_form(self, request, obj=None, change=False, **kwargs):
form = super().get_form(request, obj, change, **kwargs)
form.base_fields["color"].widget = UnfoldAdminColorInputWidget()
return form
# def get_form(self, request, obj=None, change=False, **kwargs):
# form = super().get_form(request, obj, change, **kwargs)
# form.base_fields["color"].widget = UnfoldAdminColorInputWidget()
# return form
@admin.register(ProductImageModel)
class ProductImagesAdmin(ModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
search_fields = ['name']
compressed_fields = True
warn_unsaved_form = True
formfield_overrides = {
ArrayField: {
"widget": ArrayWidget,
}
}
@@ -92,14 +105,14 @@ class ProductVariantInLine(StackedInline):
show_change_link = True
tab = True
min_num = 1
autocomplete_fields = ['attributes']
autocomplete_fields = ['attributes', 'in_pack_items', 'images']
# search_fields = ['']
def get_form(self, request, obj=None, change=False, **kwargs):
form = super().get_form(request, obj, change, **kwargs)
form.base_fields["color"].widget = UnfoldAdminColorInputWidget()
return form
def formfield_for_dbfield(self, db_field, request, **kwargs):
if db_field.name == 'color':
kwargs['widget'] = UnfoldAdminColorInputWidget()
return super().formfield_for_dbfield(db_field, request, **kwargs)
@@ -138,15 +151,15 @@ class ProductModelAdmin(ModelAdmin, ImportExportModelAdmin):
readonly_fields = ('slug', )
search_fields = ['name', 'description', ]
list_filter = ['show', 'category']
autocomplete_fields = ['related_products', 'in_pack_items',]
autocomplete_fields = ['related_products', ]
# compressed_fields = True
warn_unsaved_form = True
list_display = ['display_image', 'display_price', 'view', 'show', 'rating', 'category', ]
list_display = ['display_price', 'view', 'show', 'rating', 'category', ]
fieldsets = (
('فیلد های اصلی', {'fields': ('name', 'description', 'category', 'related_products', 'show',), "classes": ["tab"],}),
('فیلد های سيو', {'fields': ('meta_description', 'meta_keywords', 'meta_rating', 'slug'), "classes": ["tab"],}),
('فیلد های مربوط به کاربر', {'fields': ('rating', 'view',), "classes": ["tab"],}),
('فیلد های ایتم های پک', {'fields': ('in_pack_items', ), "classes": ["tab"],})
# ('فیلد های ایتم های پک', {'fields': ('in_pack_items', ), "classes": ["tab"],})
)
formfield_overrides = {
@@ -163,24 +176,24 @@ class ProductModelAdmin(ModelAdmin, ImportExportModelAdmin):
return obj.get_toman_price()
display_price.short_description = 'قیمت تومانی'
@display(description='محصول', header=True)
def display_image(self, instance):
if instance and instance.variants.first() and instance.variants.first().attributes.first():
image = instance.variants.first().attributes.first().image.url if instance.variants.first().attributes.first().image else None
else:
image = None
return [
instance.name,
None,
None,
{
"path": image,
"height": 30,
"width": 30,
"borderless": True,
# "squared": True,
},
]
# @display(description='محصول', header=True)
# def display_image(self, instance):
# if instance and instance.variants.first() and instance.variants.first().attributes.first():
# image = instance.variants.first().attributes.first().image.url if instance.variants.first().attributes.first().image else None
# else:
# image = None
# return [
# instance.name,
# None,
# None,
# {
# "path": image,
# "height": 30,
# "width": 30,
# "borderless": True,
# # "squared": True,
# },
# ]
# @display(
# description=("نمایش در صفحه ی اصلی"),
# label={