1

我有一个ActivityLogDjango 模型,它定义了一个具有以下字段的通用外键:

model_type = models.ForeignKey(ContentType, verbose_name=_("Object type"))
object_id = models.PositiveIntegerField(_("Object id"))
object = generic.GenericForeignKey('model_type', 'object_id')

我需要过滤相关未删除的ActivityLog实例(不是无)。objectDjango 不执行删除级联GenericForeignKey,我需要从查找中排除这些不需要的记录。有没有一种简单、标准和有效的方法来做到这一点?

在一个美好的世界中,我会使用类似的东西:

real_activity_logs = ActivityLog.objects.filter(object__isnull=False)

但这不起作用,因为object它不是数据库字段。

4

1 回答 1

1

如果您希望ActivityLog在级联中删除这些实例,您可以通过GenericRelation在指向的对象上定义 a 来实现。从文档中:

另请注意,如果您删除具有 GenericRelation 的对象,则任何具有 GenericForeignKey 指向它的对象也将被删除。

于 2013-08-26T05:46:49.320 回答