最近在用django做一下项目, 我也是第一次使用django, 也是第一次比较正式的使用Python. 本文将记录一下使用django过程中遇到的一下问题和解决办法. 并且不断更新!
setting设置
几天发现部署以后显示的时间不多, 是因为时区设置到问题
对于我们中国:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
TIME_ZONE
=
'
Asia/Shanghai
'
LANGUAGE_CODE
=
'
zh-cn
'
ManyToMany的bug
如果你在使用many-to-many去取数据的时候发生如下异常:
TypeError: filter() keywords must be strings
这个是有django的bug引起的:
修复方法:
django\db\models\fields\related.py 349行
def
__init__
(self, model
=
None, core_filters
=
None, instance
=
None, symmetrical
=
None,
join_table
=
None, source_col_name
=
None, target_col_name
=
None):
super(ManyRelatedManager, self).
__init__
()
self.core_filters
=
core_filters
self.model
=
model
self.symmetrical
=
symmetrical
self.instance
=
instance
self.join_table
=
join_table
self.source_col_name
=
source_col_name
self.target_col_name
=
target_col_name
self._pk_val
=
self.instance._get_pk_val()
改成
def
__init__
(self, model
=
None, core_filters
=
None, instance
=
None, symmetrical
=
None,
join_table
=
None, source_col_name
=
None, target_col_name
=
None):
super(ManyRelatedManager, self).
__init__
()
for
key, value
in
core_filters.items():
if
not
isinstance(key, str):
del
core_filters[key]
core_filters[smart_str(key)]
=
value
self.core_filters
=
core_filters
self.model
=
model
self.symmetrical
=
symmetrical
self.instance
=
instance
self.join_table
=
join_table
self.source_col_name
=
source_col_name
self.target_col_name
=
target_col_name
self._pk_val
=
self.instance._get_pk_val()