price format
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
document.querySelectorAll(".price-input").forEach((input) => {
|
||||
input.value = format(input.value);
|
||||
|
||||
input.addEventListener("input", () => {
|
||||
const cursor = input.selectionStart;
|
||||
const raw = input.value.replace(/,/g, "");
|
||||
input.value = format(raw);
|
||||
input.setSelectionRange(cursor, cursor);
|
||||
});
|
||||
input.form.addEventListener("submit", () => {
|
||||
input.value = input.value.replace(/,/g, "");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
const format = (value) => {
|
||||
if (!value) return "";
|
||||
return value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
};
|
||||
@@ -1,4 +1,5 @@
|
||||
from django.contrib import admin, messages
|
||||
from django import forms
|
||||
# from product.tasks import update_prices
|
||||
from .models import *
|
||||
from unfold.admin import TabularInline, StackedInline
|
||||
@@ -191,6 +192,18 @@ class DetailInLine(StackedInline):
|
||||
min_num = 1
|
||||
max_num = 4
|
||||
|
||||
|
||||
# --- ProductVariantAdminForm for price formatting ---
|
||||
class ProductVariantAdminForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ProductVariant
|
||||
fields = "__all__"
|
||||
widgets = {
|
||||
"input_price": forms.TextInput(attrs={"class": "price-input"}),
|
||||
"min_price": forms.TextInput(attrs={"class": "price-input"}),
|
||||
"profit": forms.TextInput(attrs={"class": "price-input"}),
|
||||
}
|
||||
|
||||
@admin.register(ProductDetailModel)
|
||||
class ProductDetailModel1Admin(ModelAdmin, ImportExportModelAdmin):
|
||||
import_form_class = ImportForm
|
||||
@@ -210,6 +223,7 @@ class ProductDetailModel1Admin(ModelAdmin, ImportExportModelAdmin):
|
||||
|
||||
class ProductVariantInLine(ProductVariantInlineAdminPermission, StackedInline):
|
||||
model = ProductVariant
|
||||
form = ProductVariantAdminForm
|
||||
extra = 0
|
||||
show_change_link = True
|
||||
tab = True
|
||||
@@ -224,11 +238,15 @@ class ProductVariantInLine(ProductVariantInlineAdminPermission, StackedInline):
|
||||
if db_field.name == 'color':
|
||||
kwargs['widget'] = UnfoldAdminColorInputWidget()
|
||||
return super().formfield_for_dbfield(db_field, request, **kwargs)
|
||||
|
||||
|
||||
from unfold.contrib.filters.admin import RelatedDropdownFilter
|
||||
@admin.register(ProductVariant)
|
||||
class ProductVariantAdmin(ProductVariantAdminPermission, ModelAdmin, ImportExportModelAdmin):
|
||||
form = ProductVariantAdminForm
|
||||
|
||||
class Media:
|
||||
js = ("price-format.js",)
|
||||
|
||||
import_form_class = ImportForm
|
||||
export_form_class = ExportForm
|
||||
autocomplete_fields = ['product_attributes', 'images', 'in_pack_items', 'details']
|
||||
|
||||
Reference in New Issue
Block a user