保存此对象时更改其他对象的字段

时间:2016-03-08 22:15:37

标签: django

我正在实施自己的通知系统,所以为此我有通知模型:

class Notification(models.Model):
    user = models.ForeignKey(User, related_name='reciever')
    sender = models.ForeignKey(User, related_name='sender')
    content_type = models.CharField(max_length=30)
    content = models.CharField(max_length=200)

我希望保存时,接收方资料中的unread_notifications布尔值会更改为true。

个人资料模型:

class UserProfile(models.Model):

    ...
    unread_notifications = models.BooleanField(default=False)

这样做的方法是什么?无法在网上找到任何东西。

2 个答案:

答案 0 :(得分:1)

我假设您在Get-WindowsFeatureUser之间存在1对1的关系。

您可以为此创建signal

UserProfile

答案 1 :(得分:1)

您可以使用@Gocht回答的信号或覆盖模型的save方法。

class Notification(models.Model):
    # fields

    def save(self, *args, **kwargs):
        super(Notification, self).save(*args, **kwargs)  # Call the "real" save() method
        UserProfile.objects.filter(id=self.user.user_profile_id).update(unread_notifications=True)

有关详细信息,请参阅overriding model methods