django useful tip

最近在用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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值