diff --git a/core/apps/orders/admin/party.py b/core/apps/orders/admin/party.py index 427f2c3..0f02f29 100644 --- a/core/apps/orders/admin/party.py +++ b/core/apps/orders/admin/party.py @@ -11,7 +11,7 @@ class PartyAmountInline(admin.StackedInline): @admin.register(Party) class PartyAdmin(admin.ModelAdmin): - list_display = ['mediator', 'delivery_date', 'payment_date', 'is_deleted'] + list_display = ['number','mediator', 'delivery_date', 'payment_date', 'is_deleted'] inlines = [PartyAmountInline] diff --git a/core/apps/orders/apps.py b/core/apps/orders/apps.py index da81335..9034a09 100644 --- a/core/apps/orders/apps.py +++ b/core/apps/orders/apps.py @@ -6,4 +6,5 @@ class OrdersConfig(AppConfig): name = 'core.apps.orders' def ready(self): - from . import admin \ No newline at end of file + from . import admin + from . import signals \ No newline at end of file diff --git a/core/apps/orders/migrations/0022_alter_party_number.py b/core/apps/orders/migrations/0022_alter_party_number.py new file mode 100644 index 0000000..ab11c11 --- /dev/null +++ b/core/apps/orders/migrations/0022_alter_party_number.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.4 on 2025-08-23 17:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0021_party_currency'), + ] + + operations = [ + migrations.AlterField( + model_name='party', + name='number', + field=models.PositiveIntegerField(default=0), + ), + ] diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 6966bce..bff1956 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -27,7 +27,7 @@ class Party(BaseModel): ('REJECTED', 'rad etilgan'), ) - number = models.PositiveIntegerField(default=1) + number = models.PositiveIntegerField(default=0) orders = models.ManyToManyField(Order, related_name='parties', null=True, blank=True) mediator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='parties') # dates @@ -59,15 +59,6 @@ class Party(BaseModel): def __str__(self): return f'P - {self.number}' - def save(self, *args, **kwargs): - if not self.pk: - last_party = Party.objects.order_by('number').last() - if last_party: - self.number = last_party.number + 1 - else: - self.number = 1 - return super().save(*args, **kwargs) - class Meta: verbose_name = 'Partiya' verbose_name_plural = 'Partiyalar' diff --git a/core/apps/orders/signals/__init__.py b/core/apps/orders/signals/__init__.py new file mode 100644 index 0000000..c4ac242 --- /dev/null +++ b/core/apps/orders/signals/__init__.py @@ -0,0 +1 @@ +from .party import * \ No newline at end of file diff --git a/core/apps/orders/signals/party.py b/core/apps/orders/signals/party.py new file mode 100644 index 0000000..f37d13c --- /dev/null +++ b/core/apps/orders/signals/party.py @@ -0,0 +1,12 @@ +from django.db.models.signals import post_save +from django.dispatch import receiver + +from core.apps.orders.models import Party + + +@receiver(post_save, sender=Party) +def set_party_number(sender, instance, created, **kwargs): + if created: + last_party = Party.objects.order_by('number').last() + instance.number = (last_party.number + 1) if last_party else 1 + instance.save(update_fields=["number"]) \ No newline at end of file