detail of product varient and serializer update

This commit is contained in:
Parsa Nazer
2025-02-19 00:15:20 +03:30
parent db02d3d3bf
commit cd7b80a05f
6 changed files with 120 additions and 42 deletions
+44 -28
View File
@@ -10,12 +10,6 @@ from unfold.widgets import UnfoldAdminColorInputWidget
from unfold.decorators import action, display
from utils.admin import ModelAdmin
@admin.register(ProductVariant)
class ProductVariantAdmin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
autocomplete_fields = ['product_attributes', 'images', 'in_pack_items']
warn_unsaved_form = True
@@ -48,6 +42,15 @@ class InPackItemsAdmin(ModelAdmin, ImportExportModelAdmin):
}
class AttributeValueInLine(StackedInline):
model = AttributeValue
extra = 0
show_change_link = True
min_num = 1
# autocomplete_fields = ['product_attributes', 'in_pack_items', 'images']
# search_fields = ['']
@admin.register(AttributeType)
class AttributeTypeAdmin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
@@ -55,7 +58,7 @@ class AttributeTypeAdmin(ModelAdmin, ImportExportModelAdmin):
search_fields = ['name']
compressed_fields = True
warn_unsaved_form = True
inlines = [AttributeValueInLine]
formfield_overrides = {
ArrayField: {
"widget": ArrayWidget,
@@ -98,20 +101,6 @@ class ProductImagesAdmin(ModelAdmin):
class ProductVariantInLine(StackedInline):
model = ProductVariant
extra = 0
show_change_link = True
tab = True
min_num = 1
autocomplete_fields = ['product_attributes', 'in_pack_items', 'images']
# search_fields = ['']
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)
@@ -129,24 +118,51 @@ class DetailModelAdmin(ModelAdmin, ImportExportModelAdmin):
"widget": ArrayWidget,
}
}
@admin.register(ProductDetailModel)
class ProductDetailModel1Admin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
search_fields = ['detail_category__title']
compressed_fields = True
warn_unsaved_form = True
formfield_overrides = {
ArrayField: {
"widget": ArrayWidget,
}
}
class DetailModelInLine(TabularInline):
model = ProductDetailModel
class ProductVariantInLine(StackedInline):
model = ProductVariant
extra = 0
fields = ['detail', 'detail_category']
show_change_link = True
autocomplete_fields = ['detail', 'detail_category']
tab = True
min_num = 1
# inlines = [DetailModelInLine]
autocomplete_fields = ['product_attributes', 'in_pack_items', 'images', 'details']
# search_fields = ['']
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)
@admin.register(ProductVariant)
class ProductVariantAdmin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
autocomplete_fields = ['product_attributes', 'images', 'in_pack_items', 'details']
warn_unsaved_form = True
# inlines = [DetailModelInLine]
@admin.register(ProductModel)
class ProductModelAdmin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
inlines = [ProductVariantInLine, DetailModelInLine]
inlines = [ProductVariantInLine]
readonly_fields = ('slug', )
search_fields = ['name', 'description', ]
list_filter = ['show', 'category']