一。報異常 ‘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這個方法開始,然后根據錯誤提示一步步補全剩余的代碼,直到沒有報錯為止,這樣就完美解決了顯示中文問題。