我有三个Django模型:
class Invitation(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
invited_by = models.ForeignKey("User")
event = models.ForeignKey("Event", related_name="invitations")
class User(models.Model):
name = models.CharField(_('full name'))
class Event(models.Model):
title = models.CharField()
invitees = models.ManyToManyField(settings.AUTH_USER_MODEL)
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
现在,如果被邀请者变空,我想删除事件模型。所以我们有两个用户,Tim和Bob。蒂姆邀请鲍勃参加活动。所以我们有一个事件对象和一个邀请对象。鲍勃删除他的帐户。邀请被删除,但事件仍然没有被邀请者。我希望这能自动删除该事件。感谢文档中的任何帮助或指导!
答案 0 :(得分:1)
您可以override模型上的delete
方法 - 在这种情况下为Invitation
- 来检查目标Event
是否不再有任何相关的邀请,以及适当删除它(只需确保在那里的某处调用super
,否则实际的删除不会发生。)
您可以使用post_delete
signal完成同样的事情。
但是,重要的是要注意,只有在单个实例上直接调用delete()
时才会调用它们,而不是在查询集上使用delete()
时调用(例如{{1} }})。因此,如果这是您需要依赖的行为,那么非常慎重地考虑如何删除对象。