2017-07-18 4 views
0

Kann mir jemand helfen, dieses bestimmte Problem abzufragen?Abfrage, die eine multidimensionale Sammlungen mit einem bestimmten Kriterium zurückgibt

hier ist ein Beispiel Modell:

class Diagnosis(models.Model): 
    remarks = models.TextField() 
    is_success= models.BooleanField() 
    created_at = models.DateTimeField(auto_now_add=True) 

Hier ist die Umsetzung:

d1 = Diagnosis.objects.create(is_success = False, remarks='d1') 
d2 = Diagnosis.objects.create(is_success=False, remarks='d2') 
d3 = Diagnosis.objects.create(is_success=True, remarks='d3') 
d4 = Diagnosis.objects.create(is_success=False, remarks='d4') 
d5 = Diagnosis.objects.create(is_success=False, remarks='d5') 
d6 = Diagnosis.objects.create(is_success=False, remarks='d6') 
d7 = Diagnosis.objects.create(is_success=True, remarks='d7') 

was jetzt würde ich seine eine mehrdimensionale Sammlung (Array) von der is_success=True filtern möchte, ist zurück vorhergehende is_success=False das bedeutet von d1 zu d3 dann von d4 zu d7 und so weiter.

Ich kämpfe diesen Ausgang Beispiel zu bekommen und beachten Sie, dass jede dict eine Instanz Diagnosis Modell ist:

[ 
    [ 
     # from the first is_success=False to is_success=True. 
     { 
      id:1, remarks: 'd1', is_success=False 
     }, 
     { 
      id:2, remarks: 'd2', is_success=False 
     }, 
     { 
      id:3, remarks: 'd3', is_success=True 
     } 
    ], 
    [ 
     # then another row for the same sequence. 
     { 
      id:4, remarks: 'd4', is_success=False 
     }, 
     { 
      id:5, remarks: 'd5', is_success=False 
     }, 
     { 
      id:6, remarks: 'd6', is_success=False 
     }, 
     { 
      id:7, remarks: 'd7', is_success=True 
     } 
    ] 
] 
+0

was ist Ihre erwartete Ausgabe? Wenn es d1 (False) ist, solltest du es nicht tun, weil es nicht funktioniert, um Parameter zu übergeben. aber trotzdem kannst du so etwas erstellen .. willst du das so erstellen? d1 (False) –

+0

Das letzte Beispiel unter meiner Frage, das ist meine erwartete Ausgabe Sir die (boolean) neben dem Element ist nur ein Detail nicht genau, wie es aussieht –

+0

Sie zugewiesen d1, d2, d3 usw., so dass Sie Ihre Ausgabe erreichen können von hardcoded. wie "d1 ({})". format (d1.is_success) ist das ok? –

Antwort

1
dim = [] 
row = [] 
for d in dia_qs: 
    row.append(d) 
    if d.is_success is True: 
     dim.append(row) 
     row = [] 

Hoffnung, dass dim ist das, was Sie wollen.

+0

Dies ist, was @sasuke über haha ​​spricht –

0

versuchen, diese Hoffnung das ist genau das, was Sie wollen,

li = [] 
for i in Diagnosis.objects.all(): 
    if li: 
     for j in li: 
     if not j[0] and j[-1]: 
      li.insert(li.index(j)+1,[i.is_success]) 
     else: 
      j.append(i.is_success) 
    else: 
     if not i.is_success: 
     li.append([i.is_success]) 
Verwandte Themen