Wie kann ich diese Django-Datensätze filtern?

9

Ich habe eine Reihe von Django-Modellen, wie im folgenden Diagramm gezeigt (die Namen der umgekehrten Beziehungen sind in den gelben Blasen dargestellt):

Django-Modelle http://mipadi.cbstaff.com/images/misc/people_django.jpg

In jeder Beziehung kann eine Person 0 oder mehr der Elemente enthalten.

Zusätzlich ist das Feld slug (leider) nicht eindeutig; Mehrere Person Datensätze können die gleichen Slug-Felder haben. Im Wesentlichen sind diese Datensätze Duplikate.

Ich möchte eine Liste aller Datensätze erhalten, die folgende Kriterien erfüllen: Alle doppelten Datensätze (dh mit demselben Slug) mit mindestens einem Entry ODER mindestens einem Audio ODER mindestens einem Episode OR mindestens ein Article .

Bisher habe ich folgende Abfrage:

%Vor%

Dies gruppiert alle Datensätze nach slug und fügt dann ein num_records -Attribut hinzu, das angibt, wie viele Datensätze diesen Slug haben, aber die zusätzliche Filterung wird nicht durchgeführt (und ich weiß nicht einmal, ob das überhaupt funktionieren würde, da bei einer Menge von doppelten Datensätzen z. B. einer und Entry und der andere Article haben kann.

Kurz gesagt möchte ich alle doppelten Datensätze finden und sie zusammen mit den zugehörigen Modellen in einem Datensatz zusammenfassen.

Was ist der beste Weg, dies mit Django zu machen?

    
mipadi 15.06.2010, 19:36
quelle

3 Antworten

1

Ich würde dies in mehreren Abfragen tun. Die erste ist Ihre Liste von Duplikaten, die Sie haben:

%Vor%

Ich würde dann diese durchlaufen, und für jeden entscheiden, was zu halten ist (eine willkürliche Entscheidung treffen - wählen Sie die erste). Aktualisieren Sie dann für alle anderen Primärschlüssel alle anderen Objekte so, dass sie auf den Primärschlüssel zeigen, den Sie ausgewählt haben:

%Vor%     
spookylukey 24.06.2010, 15:25
quelle
0

Haben Sie sich die Daggrego-Aggregation für "Gruppe nach" ähnlichem Verhalten angesehen?

Ссылка

    
Klaas van Schelven 16.06.2010 10:28
quelle
0

Ich bin nicht sicher, ob die Verkettung von Filtern Sie dorthin bringt, wo Sie hin wollen, da es Personeneinträge geben wird, die zwei oder mehr Arten von Artefakten mit ihrem Namen haben. Sehen Sie sich eine vorherige StackOverflow-Frage und ihre Antwort an, die Ihnen helfen wird, vier Abfragen in einem einzelnen QuerySet wie gewünscht zu kombinieren:

So kombinieren Sie zwei oder mehr Abfragesätze in einer Django-Ansicht?

    
stw_dev 18.06.2010 15:57
quelle

Tags und Links