Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
То, что Вы хотите изучить, сигналы Django (выезд эта страница также), конкретно образцовые сигналы - более конкретно, сигнал post_save. Сигналы являются версией Django системы плагина/рычага. Сигнал post_save отправляется каждый раз, когда модель сохраняется, обновляется ли это или создается (и это сообщит, было ли это создано). Это - то, как Вы использовали бы сигналы, которые будут уведомлены, когда Действие имеет Отмену
from django.db.models.signals import post_save
class Activity(models.Model):
name = models.CharField(max_length=50, help_text='Some help.')
entity = models.ForeignKey(CancellationEntity)
@classmethod
def cancellation_occurred (sender, instance, created, raw):
# grab the current instance of Activity
self = instance.activity_set.all()[0]
# do something
...
class Cancellation(models.Model):
activity = models.ForeignKey(Activity)
date = models.DateField(default=datetime.now().date())
description = models.CharField(max_length=250)
...
post_save.connect(Activity.cancellation_occurred, sender=Cancellation)
Что случилось со следующим?
class Cancellation( models.Model ):
blah
blah
def save( self, **kw ):
for a in self.activity_set.all():
a.somethingChanged( self )
super( Cancellation, self ).save( **kw )
Это позволило бы Вам управлять уведомлением среди моделей очень точно. В некотором смысле, это - каноническое, "Почему OO так хорошо?" вопрос. Я думаю, что OO хорошо точно, потому что Ваш набор объектов Отмены и Действия может в полной мере сотрудничать.