2011-12-03 22 views
0

我如何指定或確定我的對象在Python中的值,如果它有這個值[]或它有[<Booking: arab>], 讓我們說,在我的查詢集中,我篩選了一個不存在於我的對象中的值。如何在django中指定對象的值:is []是否等於None?

這裏是我做了什麼:這date_select沒有數據

>>> x = Booking.objects.filter(date_select='2011-12-3') 
>>> print x 
[] 
>>> if x == None: 
... print 'none' 
... 
>>> 

[]不等於None? 當我嘗試有數據

一個date_select
>>> x = Booking.objects.filter(date_select='2011-12-2') 
>>> print x 
[<Booking: arab>, <Booking: arab>, <Booking: vvv>] 
>>> if x == None: 
... print 'none' 
... 
>>> 

我只是想確定x是否有數據... 任何人都可以給我一個關於我的情況的想法嗎?

在此先感謝

+1

你的例子似乎提供絕對的證據證明'[]'不等於'None'。既然你的例子提供了所有需要的證明,你究竟在問什麼?你能否改述你的問題,以反映你提供了證明「[]'不等於'無」的事實? –

回答

3

如果您想知道您的查詢集是否返回任何結果,請致電exists方法。

x = Booking.objects.filter(date_select='2011-12-3') 
if x.exists(): 
    # There are some results from this query set 

如果你想知道有多少項目,你可以使用count

x = Booking.objects.filter(date_select='2011-12-3') 
print x.count() 
2

你只需要

if queryset: 
    print 'not empty' 
+0

感謝您的答覆armonge,我嘗試你的答案,但它不工作...你能請我建議一個關於它的細節代碼?謝謝 – gadss

+0

@gadss你能詳細說明它爲什麼不起作用嗎?當你在shell中執行查詢時它是空的= – armonge

3

沒有,[]不等於None[]是一個空列表 - 一個沒有內容的列表,但仍然存在,並且可能會有一些元素。 None是代表「無」的值 - 當您找到None值時,它會測量「此變量沒有相關內容」。因爲空列表可以是相關內容 - 例如,空列表可以是列表的初始狀態,這將隨着時間積累元素 - 那麼假設[] == None沒有意義。

armonge給你的迴應:只使用列表作爲條件,因爲空列表是「falsy」 - 也就是,作爲一個條件的if使用時,空的名單有False同樣的效果,while等。如果要執行的東西時,列表確實有一些內容,就否定它:

if not x: 
    print 'empty list (is not None)' 

順便說一句,一個問題:你用用Lisp編程?這是唯一一個空列表等同於「無類型」的語言(在這種情況下,nil)。

相關問題