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

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

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 Ответ

2 голосов
/ 31 марта 2019

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

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

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

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

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

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...