Ошибка типа в /accounts /sign_up / create() принимает 1 позиционный аргумент, но было задано 2

#python #django

#python #django

Вопрос:

Когда я пытаюсь создать нового пользователя, он показывает мне эту ошибку

 return getattr(self.get_queryset(), name)(*args, **kwargs)
TypeError: create() takes 1 positional argument but 2 were given
  

и это мои модели

 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)
  

Я отсутствовал долгое время. используя этот язык. тогда помогите мне с этой ошибкой

Ответ №1:

Вам нужно передать аргументы ключевого слова в create() метод даже для kwargs['instance'] таких:

 .create(instance=kwargs['instance'])
  

Или вместо этого вы можете использовать add() метод:

 Notification.objects.add(kwargs['instance'])
  

Лучшая альтернатива для уведомления :

pip устанавливает django-уведомления-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)
  

Комментарии:

1. Спасибо за твой ответ, братан. Но я нашел ошибку, я просто редактирую эту строку noti=Notification.objects.create(user=kwargs['instance'],