#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'],