Упрощена система номеров заказов: переход на числовые номера
- Изменено поле order_number с CharField на PositiveIntegerField - Удален метод generate_order_number() - Упрощен метод save() - автоинкремент на основе максимального значения - Номера заказов теперь хранятся как числа (1, 2, 3, ...) без форматирования - Удалены все миграции для чистого старта 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,6 @@ from customers.models import Customer, Address
|
||||
from products.models import Product, ProductKit
|
||||
from shops.models import Shop
|
||||
from simple_history.models import HistoricalRecords
|
||||
import uuid
|
||||
|
||||
|
||||
class Order(models.Model):
|
||||
@@ -20,12 +19,11 @@ class Order(models.Model):
|
||||
verbose_name="Клиент"
|
||||
)
|
||||
|
||||
order_number = models.CharField(
|
||||
max_length=50,
|
||||
order_number = models.PositiveIntegerField(
|
||||
unique=True,
|
||||
editable=False,
|
||||
verbose_name="Номер заказа",
|
||||
help_text="Уникальный номер заказа для отображения клиенту"
|
||||
help_text="Уникальный номер заказа"
|
||||
)
|
||||
|
||||
# Тип доставки
|
||||
@@ -254,17 +252,10 @@ class Order(models.Model):
|
||||
def save(self, *args, **kwargs):
|
||||
# Генерируем уникальный номер заказа при создании
|
||||
if not self.order_number:
|
||||
self.order_number = self.generate_order_number()
|
||||
last_order = Order.objects.order_by('-order_number').first()
|
||||
self.order_number = (last_order.order_number if last_order else 0) + 1
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def generate_order_number(self):
|
||||
"""Генерирует уникальный номер заказа"""
|
||||
# Формат: ORD-YYYYMMDD-XXXX (например: ORD-20250126-A3F2)
|
||||
from datetime import datetime
|
||||
date_str = datetime.now().strftime('%Y%m%d')
|
||||
unique_id = uuid.uuid4().hex[:4].upper()
|
||||
return f"ORD-{date_str}-{unique_id}"
|
||||
|
||||
def clean(self):
|
||||
"""Валидация модели"""
|
||||
super().clean()
|
||||
|
||||
Reference in New Issue
Block a user