python-django開發(django2.0.9+xadmin0.6.1)填坑


 一。報異常 ‘DateTimeField‘ object has no attribute ‘rel‘

修改 xadmin\views/list.py 中228行

if isinstance(field.rel, models.ManyToOneRel):

related_fields.append(field_name)

修改為

if isinstance(field.remote_field, models.ManyToOneRel):

related_fields.append(field_name)

PS:凡是報異常rel的地方都可以嘗試將報錯方法中的.rel 修改為.remote_field

 

 

二。手動添加系統日志時報異常: 'ManyToOneRel' object has no attribute 'to'

修改 xadmin\plugins\quickform.py 中80行

self.add_url, (_('Create New %s') % self.rel.to._meta.verbose_name), name,

修改為

self.add_url, (_('Create New %s') % self.rel), name,

 

 

三。報異常:Exception: Relate Lookup field must a related field

修改 xadmin\util.py 中 495行

return (hasattr(field, 'rel') and field.rel != None) or is_related_field(field)

修改為

return (hasattr(field, 'remote_field') and field.remote_field != None) or is_related_field(field)

 

 

四。登錄或注銷時報異常:logout() got an unexpected keyword argument 'current_app' 或 login() got an unexpected keyword argument 'current_app'

修改xadmin\views\website.py 中61、87行

注釋掉:# 'current_app': self.admin_site.name,

 

 

五。國際化問題報異常:ImportError: cannot import name 'javascript_catalog' from 'django.views.i18n' (E:\PYDjango\seafood\venv\lib\site-packages\django\views\i18n.py)

此異常會導致 adminx.py中的show_detail_fields 設置無效

由於django2.x中該javascript_catalog方法不存在,引起詳情界面(xadmin.plugin.details.js)的JS代碼執行異常,以下gettext()方法無法執行

當點擊詳情圖標時,就無法正常彈出詳情界面窗口

方法1:臨時解決辦法(此方法按鈕顯示為英文),修改xadmin\sites.py中348行,注釋掉

#if settings.USE_I18N:

# from django.views.i18n import javascript_catalog

#else:

# from django.views.i18n import null_javascript_catalog as javascript_catalog

添加行

from django.views.i18n import null_javascript_catalog as javascript_catalog

 

方法2:同樣注釋掉上面的代碼(同方法1,此方法按鈕仍顯示為英文)

添加行

from django.views.i18n import JavaScriptCatalog

return JavaScriptCatalog.as_view(packages=['django.conf'])(request)

方法3:不修改xadmin\sites.py,只修改django\views\i18n.py(此方法按鈕顯示為中文)。

先在settings.py -- INSTALLED_APPS=[...] 中添加 'django.conf'(否則會報異常Invalid package(s) provided to JavaScriptCatalog:...)

再去git上找django1.9.x分支(https://github.com/django/django/blob/stable/1.9.x/django/views/i18n.py),將django\views\i18n.py文件中的代碼復制到本地項目django2.X(記得保留JavaScriptCatalog這個類)的同名文件中。具體操作先從復制javascript_catalog這個方法開始,然后根據錯誤提示一步步補全剩余的代碼,直到沒有報錯為止,這樣就完美解決了顯示中文問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM