次のdjangoモデルがあります:
class Video(models.Model):
# ... snip ...
# Entities detected using face tracking
faces = models.ManyToManyField(Entity, related_name="facevids", blank=True)
# Entities detected using speaker diarisation
speakers = models.ManyToManyField(Entity, related_name="speakervids", blank=True)
# Entities detected by extracting names from metadata and ocr
names = models.ManyToManyField(Entity, related_name="namevids", blank=True)
# Entities detected using logo detection
logos = models.ManyToManyField(Entity, related_name="logovids", blank=True)
class Entity(models.Model):
entity_id = models.CharField(primary_key = True, max_length = 100)
またはと同じ方法で ManyToMany カスタム フィールドにEntity
アクセスできるように、カスタム Manager を追加したいと考えています。allvids
facevids
speakervids
これまでのところ、このようなことを行うクエリセットにアクセスして結合する方法を考え出しました
@property
def allvids(self):
return (self.facevids.get_query_set() | self.speakervids.get_query_set() |
self.namevids.get_query_set() | self.logovids.get_query_set()).distinct()
しかし、これは Manager ではなくクエリセット オブジェクトを返します。つまり、へのアクセスは 、 などallvids
と同じではありませんfacevids
。speakervids
エンド ユーザーが実装について知る必要がなくallvids
、他の Manager フィールドとまったく同じようにアクセスすることをお勧めします。 .