Как указать значения в объектах в Django: [] не равен None? - PullRequest
0 голосов
/ 03 декабря 2011

как я могу указать или определить значения в моих объектах в Python, если оно имеет это значение [] или [<Booking: arab>], скажем, в моем наборе запросов я фильтрую значение, которого нет в моих объектах.

вот что я сделал: этот date_select не имеет данных

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

это [] не равно None? когда я пытаюсь выбрать дату, у которой есть данные

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

я просто хочу определить, есть ли у х данные или нет ... Может кто-нибудь может дать мне представление о моем случае?

заранее спасибо

Ответы [ 3 ]

3 голосов
/ 03 декабря 2011

Нет, [] не равно None. [] - это пустой список - список без контента, но, тем не менее, существует и может иметь некоторые элементы. None - это значение, представляющее «ничто» - когда вы находите значение None, оно измеряет что-то вроде «эта переменная не имеет соответствующего содержимого». Поскольку пустые списки могут быть релевантным содержимым - например, пустой список может быть начальным состоянием списка, который со временем будет накапливать элементы - тогда нет смысла предполагать, что [] == None.

armonge дал вам ответ: просто используйте список в качестве условия, потому что пустые списки «ложные» - то есть, пустые списки имеют тот же эффект, что и False, когда используются в качестве условия для if, while и т. Д. Если вы хотите выполнить что-то, когда в списке нет содержимого, просто отрицайте это:

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

Кстати, вопрос: вы привыкли программировать на Лиспе? Это единственный язык, в котором пустой список эквивалентен «None type» (в данном случае nil).

3 голосов
/ 04 декабря 2011

Если вы хотите узнать, дал ли ваш набор запросов какие-либо результаты, вызовите метод 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 голосов
/ 03 декабря 2011

Вам просто нужно

if queryset:
    print 'not empty'
...