2017-07-18 63 views
0

任何人都可以幫助我如何查詢這個特定的問題?查詢返回具有特定條件的多維集合

這裏有一個例子模型:

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

下面是執行:

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') 

現在我想過濾就是從is_success=True到返回多維集合(陣列)的之前的​​表示從d1到d3,然後從d4到d7等。

我努力讓這個輸出例子,注意每個字典是Diagnosis模型的實例:

[ 
    [ 
     # 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

什麼是您預期的輸出?如果它是d1(假),你不應該因爲它沒有傳遞參數的功能。但你仍然可以創建這樣的東西..你想創建這樣的? d1(False) –

+0

我的問題下面的最後一個例子是我期望的輸出先生(布爾)旁邊的項目只是一個細節不正是它看起來像 –

+0

你分配給d1,d2,d3等,所以你可以實現你的輸出通過硬編碼。像「d1({})」。格式(d1.is_success)這是好嗎? –

回答

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

。希望dim是你想要的。

+0

這就是@sasuke談到關於哈哈 –

0

試試這個希望這正是你想要的東西,

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])