Использовать сообщения Django
Прежде всего, рассмотрите ответ dcrodjer's .Система сообщений Django - это именно то, что вам нужно, и зачем вкладывать в свое дерево кода то, что вы получаете бесплатно?
(Конечно, если вы делаете это просто для того, чтобы экспериментировать и узнать больше о Django, пожалуйста,продолжить!)
В любом случае, исправление
Резюме: Чтобы исправить это, просто измените add_notifications
на следующее:
def add_notification(self, message):
notification = Notification(user=self.user, message=message)
notification.save
Обратите внимание на дополнительный аргумент (с именем self
) в сигнатуре метода.
Почему это не работает
В вызовах методов в Python есть некоторая странность.
class Foo(object):
def bar(self):
print 'Calling bar'
def baz(self, shrubbery):
print 'Calling baz'
thisguy = Foo()
Когда вы вызываете метод bar
, вы можете использовать строку типа thisguy.bar()
.Python видит, что вы вызываете метод для объекта (метод с именем bar
для объекта с именем thisguy
).Когда это происходит, Python заполняет первый аргумент метода самим объектом (thisguy
объект).
Причина, по которой ваш метод не работает, заключается в том, что вы вызываете userinfo.add_notification('you are an awesome intern!')
для методаэто только один аргумент.Ну, Python уже заполнил первый аргумент (названный message
) объектом userinfo
.Таким образом, Python жалуется, что вы передаете два аргумента методу, который ожидает только один.