【发布时间】:2016-12-26 08:44:38
【问题描述】:
我的 models.py 中有一个非常简单的模型,如下所示:
class Music(models.Model):
title= models.CharField(
max_length=100
)
description = models.TextField(
null=True,
blank=True
)
def __unicode__(self):
return self.name
class Album(models.Model):
musician= models.CharField(
related_name='musician',
max_length=100
)
music = models.ForeignKey(
Music,
related_name='music'
)
def __unicode__(self):
return self.user.username
在这种情况下,我在我的 signals.py 中做了一个非常简单的逻辑来检查新字段(新音乐)是否刚刚添加到专辑中。
Album(musician="someone", music=Music.objects.get(title="something")) #pk=1
Album.save()
像这样:
@receiver(post_save, sender=Album)
def add_new_album(sender, instance, **kwargs):
if kwargs.get('created'):
print "new album recently created"
在其他情况下,我想发出仅在将现有字段编辑为新字段时才响应的信号:
edit_album = Album.objects.get(pk=1)
edit_album.music = Music.objects.get(title="something_else")
edit_album.save()
每次我编辑现有字段时都会触发 post_save 接收器 make add_new_album() 函数的使用。所以我的问题是,在仅响应编辑字段条件的 signals.py 中应该实现的逻辑是什么?
【问题讨论】: