Джанго странная икона поведения в развитии - PullRequest
0 голосов
/ 13 января 2012

Я получаю странное поведение, используя icontains на моем сервере разработки. У меня сложный запрос, который возвращает странные результаты (не ожидаемое число). Я просверлил, чтобы найти проблему, кажется, с icontains.

Прежде всего, вот вывод mysql части запроса, который я хочу выполнить в Django:

mysql> select * from species where en_name RLIKE 'tortoise';
+-------+----------------------------------+
| id    | en_name                          |
+-------+----------------------------------+
| 16215 | Santa Cruz Galapagos Tortoise    |
| 16214 | Floreana Galapagos Tortoise      |
| 16213 | Volcan Darwin Galapagos Tortoise |
| 16211 | Sierra Negra Galapagos Tortoise  |
| 16210 | Pinzon Galapagos Tortoise        |
| 16209 | Santiago Galapagos Tortoise      |
|   738 | River Tortoise                   |
| 16207 | Volcan Wolf Galapagos Tortoise   |
| 16206 | Pinta Galapagos Tortoise         |
| 16216 | Fernandina Galapagos Tortoise    |
| 16217 | Santa Fe Galapagos Tortoise      |
| 16218 | Alcedo Galapagos Tortoise        |
| 16219 | Cerro Azul Galapagos Tortoise    |
| 16220 | Rabida Galapagos Tortoise        |
+-------+----------------------------------+
14 rows in set (0.00 sec)

Когда я захожу в оболочку Django и запускаю:

query_set = Species.objects.filter(en_name__icontains='tortoise')

Я получаю один результат:

>>> for i in query_set:
...     print i.en_name   
...     
River Tortoise 

В предположении я бы сказал, что это как-то связано с количеством пробелов в строке en_name (у River Turtoise есть один, тогда как у остальных> 1) Я также слышал, что icontains может вести себя по-разному при разработке и производстве.

Может кто-нибудь пролить свет на это?

1 Ответ

0 голосов
/ 13 января 2012

Если вы хотите сделать RLIKE, который, на мой взгляд, является псевдонимом REGEXP http://dev.mysql.com/doc/refman/5.0/en/regexp.html#operator_regexp

query_set = Species.objects.filter(en_name__regex='tortoise')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...