2016-06-06 21 views
-1

如果條件,我得到錯誤的結果在我的列表理解。我嘗試了一切提示什麼可能是錯的。錯誤的結果列表理解編碼

po_list = [n for n in Material.objects.all() 
    if (((F('n.total_inventory') + F('n.total_po') - F('n.total_so'))) < F('n.min_quantity'))] 

目前,它總會給材料模型 的所有數據。如果我切換大於/小於符號方向也沒有給出數據


編輯 我錯誤地認爲它是自我解釋的代碼。 正確的結果是隻輸出來自Material的值,以滿足這3個屬性的條件計算((F('n.total_inventory')+ F('n.total_po') - F('n。這個代碼是Django項目的一部分,而django框架中的F是: 一個F()對象表示的是一個F()它可以引用模型字段值並使用它們執行數據庫操作,而無需實際將它們從數據庫中拉出到Python內存中。 https://docs.djangoproject.com/en/1.7/ref/models/queries/

我不能僅僅通過這些值進行過濾他們是計算器特德屬性。

+4

你知道你有沒有解釋* *正確的結果是什麼,更不用說爲什麼它是正確的,不是嗎? –

+3

什麼是'F',你爲什麼要傳遞字符串?它看起來不像你的情況以任何方式使用'n'。 – user2357112

+1

確實條件是獨立的變量'n' –

回答

1

不要使用F對象,並使用n變量:

po_list = [n for n in Material.objects.all() 
      if (n.total_inventory + n.total_po - n.total_so) < n.min_quantity] 
+0

不能這樣做。由於這3個字段是模型中的計算屬性,所以我不能對這些字段進行過濾。 –

+1

@JohnGoldman沒關係,更新了答案以反映這一點。希望有所幫助。 – alecxe