2014-09-02 117 views
0

我有這樣一個模型下面過濾器在查詢集獨特的記錄基於模型場在Django

class SafetyRead(models.Model): 
    name = models.CharField(max_length=256) 
    accession_number = models.CharField(max_length=256) 
    data = models.CharField(max_length=256) 
    approved = models.BooleanField() 
    radiologist = models.BooleanField() 

    def __unicode__(self): 
     return 'SafetyRead - %s'%self.accession_number 

通常當我在下面的方式,我得到的結果

查詢進行搜索

SafetyRead.objects.filter(approved=False,radiologist=False) 

結果

[<SafetyRead: SafetyRead - 2983>, <SafetyRead: SafetyRead- 2582>, <SafetyRead: SafetyRead - 2583>, <SafetyRead: SafetyRead - 2522>, <SafetyRead: SafetyRead - 2522>] 

正如你可以從上面的查詢觀察結果中的最後兩個記錄被複制與現場accession_number2522

所以我想根據喜歡同樣的查詢集格式字段accession_number過濾獨特SafetyRead對象記錄(刪除重複的accession_number 2522記錄後)

[<SafetyRead: SafetyRead - 2983>, <SafetyRead: SafetyRead- 2582>, <SafetyRead: SafetyRead - 2583>, <SafetyRead: SafetyRead - 2522] 

那麼如何過濾呢?

+0

從你想離開這兩個重複的記錄呢?那個更大的ID? – 2014-09-02 08:38:33

回答

0

我相信你正在尋找distinct

嘗試:

SafetyRead.objects.filter(approved=False,radiologist=False).distinct() 
+0

但是通過使用'distinct'它給了'*** NotImplementedError:DISTINCT ON字段不被這個數據庫後端支持'錯誤 – 2014-09-02 09:02:06

+0

對不起,我錯過了文檔中的某些東西,如果你只能傳遞一個字段到'distinct' '使用postgres。我已經更新了答案。 – crhodes 2014-09-02 09:06:21

+0

但是,如果我們只使用'disticnt()',結果將是相同的,因爲它會根據id刪除重複記錄,但是我們想刪除包含重複'accession_number'模型字段值的重複記錄 – 2014-09-02 09:09:55