Исправлены 4 проблемы: 1. Расчёт цены первого товара - улучшена валидация в getProductPrice и calculateFinalPrice 2. Отображение actual_price в Select2 вместо обычной цены 3. Количество по умолчанию = 1 для новых форм компонентов 4. Auto-select текста при клике на поле количества для удобства редактирования Изменённые файлы: - products/forms.py: добавлен __init__ в KitItemForm для quantity.initial = 1 - products/templates/includes/select2-product-init.html: обновлена formatSelectResult - products/templates/productkit_create.html: добавлен focus handler для auto-select - products/templates/productkit_edit.html: добавлен focus handler для auto-select 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
from django import forms
|
|
from phonenumber_field.formfields import PhoneNumberField
|
|
from phonenumber_field.widgets import PhoneNumberPrefixWidget
|
|
from .models import Customer
|
|
|
|
class CustomerForm(forms.ModelForm):
|
|
phone = PhoneNumberField(
|
|
region='BY',
|
|
help_text='Формат: +375XXXXXXXXX или 80XXXXXXXXX',
|
|
widget=forms.TextInput(attrs={'placeholder': '+375XXXXXXXXX'})
|
|
)
|
|
|
|
class Meta:
|
|
model = Customer
|
|
fields = ['name', 'email', 'phone', 'loyalty_tier', 'notes']
|
|
widgets = {
|
|
'notes': forms.Textarea(attrs={'rows': 3}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
# Ensure phone displays in E.164 format
|
|
if self.instance and self.instance.phone:
|
|
self.initial['phone'] = str(self.instance.phone)
|
|
|
|
for field_name, field in self.fields.items():
|
|
if field_name == 'notes':
|
|
# Textarea already has rows=3 from widget, just add class
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
elif field_name == 'loyalty_tier':
|
|
# Select fields need form-select class
|
|
field.widget.attrs.update({'class': 'form-select'})
|
|
elif field_name == 'phone':
|
|
# Phone field gets form-control class
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
else:
|
|
# Regular input fields get form-control class
|
|
field.widget.attrs.update({'class': 'form-control'}) |