From e8d232158c8de0a6cceec7f6428b51eb3c254f8b Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Mon, 5 Jan 2026 01:35:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D1=80=D0=B5=D1=88=D1=91?= =?UTF-8?q?=D0=BD=20NULL=20=D0=B4=D0=BB=D1=8F=20delivery=5Fdate=20=D0=B2?= =?UTF-8?q?=20=D1=87=D0=B5=D1=80=D0=BD=D0=BE=D0=B2=D0=B8=D0=BA=D0=B0=D1=85?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BA=D0=B0=D0=B7=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - orders/models/delivery.py: delivery_date теперь null=True, blank=True - Валидация: для черновиков дата необязательна, для обычных заказов - обязательна - Миграция: 0003_allow_null_delivery_date_for_drafts.py --- ...0003_allow_null_delivery_date_for_drafts.py | 18 ++++++++++++++++++ myproject/orders/models/delivery.py | 11 ++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 myproject/orders/migrations/0003_allow_null_delivery_date_for_drafts.py diff --git a/myproject/orders/migrations/0003_allow_null_delivery_date_for_drafts.py b/myproject/orders/migrations/0003_allow_null_delivery_date_for_drafts.py new file mode 100644 index 0000000..55d8529 --- /dev/null +++ b/myproject/orders/migrations/0003_allow_null_delivery_date_for_drafts.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.10 on 2026-01-04 22:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0002_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='delivery', + name='delivery_date', + field=models.DateField(blank=True, help_text='Дата, когда должна быть выполнена доставка (обязательна для не-черновиков)', null=True, verbose_name='Дата доставки'), + ), + ] diff --git a/myproject/orders/models/delivery.py b/myproject/orders/models/delivery.py index c1b1997..a461c08 100644 --- a/myproject/orders/models/delivery.py +++ b/myproject/orders/models/delivery.py @@ -62,8 +62,10 @@ class Delivery(models.Model): # Дата и время доставки delivery_date = models.DateField( + null=True, + blank=True, verbose_name='Дата доставки', - help_text='Дата, когда должна быть выполнена доставка' + help_text='Дата, когда должна быть выполнена доставка (обязательна для не-черновиков)' ) time_from = models.TimeField( @@ -131,6 +133,13 @@ class Delivery(models.Model): return # Для не-черновиков полная валидация + + # Проверка: дата доставки обязательна + if not self.delivery_date: + raise ValidationError({ + 'delivery_date': 'Для не-черновиков дата доставки обязательна' + }) + # Проверка: для курьерской доставки должен быть адрес if self.delivery_type == self.DELIVERY_TYPE_COURIER: if not self.address: