У меня есть следующие модели: InvitationAccept - это приглашение с GFK.django aggregate over reverse общий внешний ключ
Я не хочу определять accepts
GenericRelation, потому что я не хочу cascade delete
, когда удаляю экземпляры InvitationAccept.
class InvitationAccept(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
invitation = generic.GenericForeignKey('content_type', 'object_id')
class Invitation(models.Model):
accepts = generic.GenericRelation(InvitationAccept)
https://docs.djangoproject.com/en/1.9/ref/contrib/contenttypes/
Заметим также, что при удалении объекта, который имеет GenericRelation, любые объекты, которые имеют GenericForeignKey указывая на это будет также удалены. В приведенном выше примере это означает, что если объект Bookmark был удален, любые объекты TaggedItem, указывающие на него, будут удалены одновременно .
Но тогда я хотел бы получить #accepts я мог бы использовать self.filter(user_invite=user).annotate(num_accepts=Count('accepts__id')).aggregate(Sum('num_accepts'))
, если бы я имел accepts
поле.
Итак, как мне не быть accepts
(а не каскадно-удалить) и запросить вышеуказанный агрегат?