Как сделать неравное в фильтрации наборов запросов Django?

Обычно вы должны добавить:

Options +ExecCGI
 AddType application/x-httpd-php .php .html
 AddHandler x-httpd-php5 .php .html

Однако для общего хостинга GoDaddy (php-cgi) вам необходимо добавить также следующие строки:

AddHandler fcgid-script .html
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .html

Источник: Анализ HTML как PHP Использование файла HTACCESS на Godaddy .

581
задан Serjik 19 December 2015 в 07:37
поделиться

4 ответа

Возможно, Q-объекты могут помочь в решении этой проблемы. Я никогда их не использовал, но кажется, что их можно отрицать и комбинировать, как обычные выражения Python.

Обновление: Я только что попробовал, похоже, работает очень хорошо:

>>> from myapp.models import Entry
>>> from django.db.models import Q

>>> Entry.objects.filter(~Q(id = 3))

[<Entry: Entry object>, <Entry: Entry object>, <Entry: Entry object>, ...]
636
ответ дан 22 November 2019 в 21:58
поделиться

Последний бит кода исключит все объекты где x! =5 и Верного. Попробуйте это:

results = Model.objects.filter(a=False, x=5)

Помните, = входят в систему, вышеупомянутая строка присваивает Ложь параметру a и номер 5 к параметру x. Это не проверяет на равенство. Таким образом нет действительно никакого способа использовать! = символ в вызове запроса.

8
ответ дан 22 November 2019 в 21:58
поделиться

Это даст Ваш желаемый результат.

from django.db.models import Q
results = Model.objects.exclude(Q(a=True) & ~Q(x=5))

для не равняются , можно использовать ~ на равном запросе. очевидно, Q может использоваться для достижения равного запроса.

1
ответ дан 22 November 2019 в 21:58
поделиться

синтаксис field = value в запросах является сокращением для field__exact = value . То есть Django помещает операторы запроса в поля запроса в идентификаторах . Django поддерживает следующие операторы:

exact
iexact
contains
icontains
in
gt
gte
lt
lte
startswith
istartswith
endswith
iendswith
range
year
month
day
week_day
isnull
search
regex
iregex

Я уверен, объединив их с объектами Q, как Дэйв Фогт предлагает , и используя filter () или exclude () ] как Джейсон Бейкер предлагает , вы получите именно то, что вам нужно, практически для любого возможного запроса.

120
ответ дан 22 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: