Reputation: 324
When I try to create a new user it will show me this error
return getattr(self.get_queryset(), name)(*args, **kwargs)
TypeError: create() takes 1 positional argument but 2 were given
and this is my models
class Notification(models.Model):
title = models.CharField(max_length=250)
message = models.TextField()
viewed = models.BooleanField(default=False)
user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
def create_welcome_message(sender, **kwargs):
if kwargs['created']:
noti=Notification.objects.create(kwargs['instance'],
title="Welcome Message",
message="Thank you for singing up!")
post_save.connect(create_welcome_message, sender=User)
I've been missing for a long time. using this language. then help me with this error
Upvotes: 0
Views: 393
Reputation:
You need to pass keyword arguments to create()
method even for kwargs['instance']
like:
.create(instance=kwargs['instance'])
Or you can use add()
method instead:
Notification.objects.add(kwargs['instance'])
Better alternative for notification :
pip install django-notifications-hq
from django.db.models.signals import post_save
from notifications.signals import notify
from myapp.models import MyModel
def my_handler(sender, instance, created, **kwargs):
notify.send(instance, verb='was saved')
post_save.connect(my_handler, sender=MyModel)
Upvotes: 1