我有一个事件对象,除此之外还有其他对象Notes
与 具有通用关系Event
,并且没有活动字段。现在我希望能够编写一个查询,它排除所有Events
活动字段Notes
为 False 的地方。所以我尝试执行以下操作。
queryset = Event.objects.all()
filters = (
Q(content_type__model='notes') &
Q(note__active=False)
)
queryset = queryset.exclude(filters)
这不起作用,因为它单独运行查询,并且当它尝试为没有 content_object 或不是 type 的项目执行时Notes
,它失败并给出以下错误:
AttributeError 'GenericRelation' object has no attribute 'field'.
class Event(models.Model):
content_type = models.ForeignKey(ContentType, null=True, blank=True)
object_id = models.PositiveIntegerField(null=True, blank=True)
content_object = GenericForeignKey('content_type', 'object_id')
class Notes(models.Model):
active = models.BooleanField(default=True)
event_log = GenericRelation(
'Event',
related_query_name='note'
)