diff --git a/backend/account/apps.py b/backend/account/apps.py index bd9c0fd..f0b161e 100644 --- a/backend/account/apps.py +++ b/backend/account/apps.py @@ -4,4 +4,6 @@ from django.apps import AppConfig class AccountConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'account' - verbose_name = 'اکانت' \ No newline at end of file + verbose_name = 'اکانت' + def ready(self): + import account.signals \ No newline at end of file diff --git a/backend/account/models.py b/backend/account/models.py index 559ef0d..e0e389a 100644 --- a/backend/account/models.py +++ b/backend/account/models.py @@ -129,7 +129,7 @@ class UserAddressModel(models.Model): city = models.CharField(max_length=30, verbose_name='شهر') province = models.CharField(max_length=30, verbose_name='استان') for_me = models.BooleanField(default=False, verbose_name='برای خود کاربر') - is_main = models.BooleanField(default=False) + is_main = models.BooleanField(default=False, verbose_name='ادرس اصلی کاربر') def __str__(self): return f"{self.user.phone}, {self.name}" diff --git a/backend/account/signals.py b/backend/account/signals.py new file mode 100644 index 0000000..d7d47d9 --- /dev/null +++ b/backend/account/signals.py @@ -0,0 +1,10 @@ +from django.db import transaction +from django.db.models.signals import post_save +from django.dispatch import receiver +from .models import UserAddressModel + +@receiver(post_save, sender=UserAddressModel) +def ensure_single_main_address(sender, instance, **kwargs): + if instance.is_main: + with transaction.atomic(): + UserAddressModel.objects.filter(user=instance.user).exclude(pk=instance.pk).update(is_main=False) \ No newline at end of file