1

次の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 を追加したいと考えています。allvidsfacevidsspeakervids

これまでのところ、このようなことを行うクエリセットにアクセスして結合する方法を考え出しました

@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と同じではありませんfacevidsspeakervidsエンド ユーザーが実装について知る必要がなくallvids、他の Manager フィールドとまったく同じようにアクセスすることをお勧めします。 .

4

0 に答える 0