Здравствуйте, я тестирую вложенность Django User / AUTH с другими моделями.
Я сделал простую модель для моего пользователя под названием MyProfil
. Каждый раз, когда регистрируется новый User
, новый объект MyProfil
создается автоматически и связывается с конкретным User
.
models.py
#-- create a MyProfil.object for new user
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_myprofil(sender, instance, created, **kwargs):
if created:
MyProfil.objects.create(owner=instance)
class MyProfil(models.Model):
# --- head
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
oblink = models.UUIDField(unique=True, default=uuid4, editable=False)
owner = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
# --- body
aboutme = models.TextField(max_length=300, blank=True)
city = models.TextField(max_length=300, blank=True)
Вопрос
В упомянутом документе Django Doc используется dispatch_uid
для предотвращения отправки дубликатов. К сожалению, я не совсем понимаю, как применить dispatch_uid
, поэтому в итоге получился такой подход для получателя.
models.py
<...>
from django.core.signals import request_finished
#-- create a MyProfil.object for new user
@receiver(post_save, sender=settings.AUTH_USER_MODEL, dispatch_uid="my_unique_identifier")
def create_myprofil(sender, instance, created, **kwargs):
if created:
MyProfil.objects.create(owner=instance)
request_finished.connect(create_myprofil, dispatch_uid="my_unique_identifier")
<...>
Так что мой вопросесли это правильный способ применения dispatch_uid
?