Как я могу предотвратить дублирование сигналов? У меня есть пользователь, который назначается и в "клиент", и в "работник" вместо одной группы соответственно
<from django.contrib.auth.models import User
from django.contrib.auth.models import Group
from .models import Client, Worker
def client_profile(sender, instance, created, **kwargs):
if created:
group = Group.objects.get(name='client')
instance.groups.add(group)
Client.objects.create(
user=instance,
name=instance.username,
)
print('Profile created!')
post_save.connect(client_profile, sender=User, dispatch_uid="client_profile")
def worker_profile(sender, instance, created, **kwargs):
if created:
group = Group.objects.get(name='worker')
instance.groups.add(group)
Worker.objects.create(
user=instance,
name=instance.username,
)
print('Profile created!')
post_save.connect(worker_profile, sender=User, dispatch_uid="worker_profile")
Это ожидаемое поведение, вы говорите своим сигналам, что каждый раз, когда создается модель пользователя, вы должны добавлять их в группу без каких-либо конкретных инструкций.
Вместо этого можно сделать проверку, состоит ли пользователь уже в данной группе, если да, то не добавлять его, если нет, то добавить в группу.
Также я вижу, что у вас есть две разные модели, одна для рабочего, другая для клиента, поэтому лучшим обходным решением будет, если отправителем будет либо рабочая, либо клиентская модель, а затем добавить экземпляр пользователя в группу.