最近在用django做一下项目, 我也是第一次使用django, 也是第一次比较正式的使用Python. 本文将记录一下使用django过程中遇到的一下问题和解决办法. 并且不断更新!
几天发现部署以后显示的时间不多, 是因为时区设置到问题
对于我们中国:
ManyToMany的bug
如果你在使用many-to-many去取数据的时候发生如下异常:
改成
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 '
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()
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()
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()