0

次のテーブルエントリがあります。

mysql> select id,name from categories;
+----+------------------------+
| id | name                   |
+----+------------------------+
|  8 | Application Process    |
|  9 | Payments               |
| 11 | Account Information    |
| 12 | Customer Support       |
| 13 | Technical Issues       |
| 15 | Most Popular Questions |
+----+------------------------+
6 rows in set (0.01 sec)

次の2つのクエリを実行すると、どちらも同じ結果になります。

>>> categories.objects.filter(name__exact="payments")[0].name
u'Payments'
>>> c.objects.filter(name__iexact="payments")[0].name
u'Payments'

これは私のモデルです:

class categories(models.Model):
 name  = models.CharField(max_length=32)
 parent  = models.ForeignKey('self', null=True, blank=True, related_name='children')
 frequency=models.IntegerField(max_length=10, blank = True, null = True)
 class Meta:
  db_table='categories'

私の質問は、exactとiexactが同じ結果を提供するのはなぜですか?なぜ2つの異なる関数/メソッドがあるのですか?

4

1 に答える 1

3

Djangoのドキュメントが示唆しているように、データベースの照合を変更する必要があるようです。mysql照合に関する注記も参照してください。たとえば、utf8_general_ci_swedishを使用すると、大文字と小文字を区別しない比較はできません。utf8_binで試してください。

于 2012-11-29T10:54:42.073 に答える