Reputation: 1932
My User
has 2 objects.
1. admin - super admin
2. tom - user
MyModel
with
class MyModel:
project_user = models.ManyToManyField(User)
Let's suppose tom
is creating a MyModel
object:
MyModel(project_user=request.user).save()
Here I would like to add admin
user automatically to the project_user
object when someone creates an object. What will the more efficient way to implement it,How about using signals or def save(self)
?
Upvotes: 0
Views: 31
Reputation: 306
I would recommend using Signals.
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
In the snippet above, I'm trying to create a custom model (i.e. Profile) when a default user once created. Therefore, I think you could write like this:
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=MyModel)
def create_user(sender, instance, created, **kwargs):
if created:
User.objects.create_user(username=instance.username)
And create_user() is a helper function of Django.
Edit: Added what I import in the snippet.
Upvotes: 1