adminのモデルのチェンジリストページで、search_fieldsにDateTimeField "birth"を追加しました。datetimefieldを管理者チェンジリストのsearch_fieldsに追加する方法
class DataLog(models.Model):
id = models.AutoField(primary_key=True, verbose_name="idd")
birth = models.DateTimeField(auto_now_add=True, verbose_name="create_time")
class DataLogAdmin(admin.ModelAdmin):
search_fields = ['id', 'birth', ]
追加するとうまくいきます。しかし、エラーが今日出てくる:
u'SELECT COUNT(*) FROM `data_log` WHERE (`data_log`.`id` LIKE %2011-07-12% OR `data_log`.`birth` LIKE %2011-07-12%)'
I'vは、それ以来、私のDjangoのプロジェクトに多くを編集した:
Warning at /admin/data/log/
Incorrect datetime value: '%2011-07-12%' for column 'birth' at row 1
Django Version: 1.2.3
Exception Location: /usr/lib/python2.5/warnings.py in warn_explicit, line 102
これは、DBのSQLです。
だから私は何の原因がわからない。ここ
は私の質問です:
- はジャンゴでサポートされているsearch_fieldsにDateTimeField型を挿入しますか?
- これを行う正しい方法は何ですか?
- エラーの原因を教えてください:
新しい進歩:
私はそのSQLをテストしました。
Mysqlでは、正常に動作します。 (両方のMySQLのコマンドラインとDjangoのdbshell)
mysql> SELECT COUNT(*) FROM `data_log` WHERE (`data_log`.`id` LIKE '%07-19%' OR `data_log`.`birth` LIKE '%07-19%');
+----------+
| COUNT(*) |
+----------+
| 3 |
+----------+
1 row in set, 1 warning (0.00 sec)
が、Djangoのシェルで、同じエラー:
User.objects.raw("SELECT COUNT(*) FROM `data_log` WHERE (`data_log`.`id` LIKE '%%07-19%%' OR `data_log`.`birth` LIKE '%%07-19%%')")[0]
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 1379, in __getitem__
return list(self)[k]
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 1372, in __iter__
for row in self.query:
File "/usr/lib/python2.5/site-packages/django/db/models/sql/query.py", line 73, in __iter__
self._execute_query()
File "/usr/lib/python2.5/site-packages/django/db/models/sql/query.py", line 87, in _execute_query
self.cursor.execute(self.sql, self.params)
File "/usr/lib/python2.5/site-packages/django/db/backends/util.py", line 15, in execute
return self.cursor.execute(sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/mysql/base.py", line 86, in execute
return self.cursor.execute(query, args)
File "/var/lib/python-support/python2.5/MySQLdb/cursors.py", line 168, in execute
if not self._defer_warnings: self._warning_check()
File "/var/lib/python-support/python2.5/MySQLdb/cursors.py", line 82, in _warning_check
warn(w[-1], self.Warning, 3)
File "/usr/lib/python2.5/warnings.py", line 62, in warn
globals)
File "/usr/lib/python2.5/warnings.py", line 102, in warn_explicit
raise message
Warning: Incorrect datetime value: '%07-19%' for column 'birth' at row 1