使用这些模型:
from django.db import models
class Event(models.Model):
recording = models.ForeignKey(Recording)
start_sample = models.IntegerField()
end_sample = models.IntegerField()
class Detection_method(models.Model):
name = models.CharField(max_length = 200)
class Event_type(models.Model):
name = models.CharField(max_length = 200)
class Event_classification(models.Model):
event = models.ForeignKey(Event)
method = models.ForeignKey(Detection_method)
event_type = models.ForeignKey(Event_type)
可以使用不同的检测方法将事件分类为多种类型。
如何选择没有Event_classifications的活动?
修改:并且相关,选择具有一个或多个特定分类的活动?
答案 0 :(得分:2)
event_classification_set
个对象上始终存在隐式反向关系甚至是Event
经理。
这将选择没有Event
的{{1}}个对象:
Event_classifications
它将执行此查询:
Event.objects.filter(event_classification__isnull=True)
请注意,如果您尝试执行相反的操作
SELECT ...
FROM "event"
LEFT OUTER JOIN "event_classification"
ON ("event"."id" = "event_classification"."event_id")
WHERE "event_classification"."id" IS NULL
您可以获得重复的事件,每个分类一个。您可以使用
消除它们Event.objects.filter(event_classification__isnull=False)