Улучшение модели Recipient: PhoneNumberField и поле notes
- Заменено поле phone с CharField на PhoneNumberField для автоматической нормализации телефонов - Убран регион BY, установлен region=None для универсальности (поддержка номеров разных стран) - Добавлено поле notes для дополнительной информации о получателе (мессенджеры, соцсети и т.д.) - Улучшена логика поиска существующих получателей: * Использование нормализованного телефона из PhoneNumberField * Регистронезависимый поиск по имени (name__iexact) * Обновление notes при нахождении существующего получателя - Обновлена форма OrderForm для работы с PhoneNumberField и новым полем notes - Обновлен шаблон order_form.html для отображения нового поля - Созданы миграции для изменений модели
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django import forms
|
||||
from django.forms import inlineformset_factory
|
||||
from phonenumber_field.formfields import PhoneNumberField
|
||||
from .models import Order, OrderItem, Transaction, Address, OrderStatus, Recipient, Delivery
|
||||
from customers.models import Customer
|
||||
from products.models import Product, ProductKit
|
||||
@@ -47,11 +48,20 @@ class OrderForm(forms.ModelForm):
|
||||
label='Имя получателя'
|
||||
)
|
||||
|
||||
recipient_phone = forms.CharField(
|
||||
max_length=20,
|
||||
recipient_phone = PhoneNumberField(
|
||||
region=None,
|
||||
required=False,
|
||||
widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Телефон получателя'}),
|
||||
label='Телефон получателя'
|
||||
label='Телефон получателя',
|
||||
help_text='Введите телефон в любом формате, будет автоматически преобразован'
|
||||
)
|
||||
|
||||
recipient_notes = forms.CharField(
|
||||
max_length=200,
|
||||
required=False,
|
||||
widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Мессенджер, соцсеть и т.д.'}),
|
||||
label='Дополнительная информация',
|
||||
help_text='Мессенджер, соцсеть или другая информация о получателе (необязательно)'
|
||||
)
|
||||
|
||||
# Поля для работы с адресом
|
||||
@@ -263,7 +273,8 @@ class OrderForm(forms.ModelForm):
|
||||
else:
|
||||
self.fields['recipient_source'].initial = 'new'
|
||||
self.fields['recipient_name'].initial = self.instance.recipient.name or ''
|
||||
self.fields['recipient_phone'].initial = self.instance.recipient.phone or ''
|
||||
self.fields['recipient_phone'].initial = str(self.instance.recipient.phone) if self.instance.recipient.phone else ''
|
||||
self.fields['recipient_notes'].initial = self.instance.recipient.notes or ''
|
||||
else:
|
||||
self.fields['other_recipient'].initial = False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user