解决Python3.6下Django2.0和Xadmin2集成问题
in Python with 0 comment

解决Python3.6下Django2.0和Xadmin2集成问题

in Python with 0 comment

问题

在进行高版本Django2Xadmin2配置时总是遇到各种各样的问题,这时候,合理的google就能解决很多问题,这里记录一下遇到的坑,配置Django的血泪史。

TypeError: __init__() missing 1 required positional argument: 'on_delete'

解决方法:
使用外键多对一模型时没有设置on_delete=models.CASCAD 级联删除
正确的ORM中模型外键如下:
org = models.ForeignKey(CourseOrg, verbose_name=u"name",on_delete=models.CASCADE)

MacOS下python3.6+django安装数据库驱动MySQLdb

方案一

下载mysql-connector-python-2.0.4-osx10.9.dmg 安装或
pip3 install --allow-external mysql-connector-python mysql-connector-python

方案二:

$ brew install mysql-connector-c
$ sudo pip install MySQL-python

方案三:

如果以上两种方案都不能成功
pip3 install pyMySQL
在项目的__init__.py下添加如下代码即可

import pymysql
pymysql.install_as_MySQLdb()

其他环境

其他环境下可详细参考stackoverflow中的解决方案,总有一条适合你
https://stackoverflow.com/questions/454854/no-module-named-mysqldb

django2集成xadmin2后在后台add时抛出“list index out of range”异常

原因是django2xadmin的兼容问题,是xadmin2的bug,在
https://blog.csdn.net/yuhan963/article/details/79167743
有详细解释说明和解决方案。
或者参考
https://github.com/sshwsfc/xadmin/issues/528
这里给出另一种解决方案:
有牛人在官方给的xadmin2源码基础上进行了bugfix,给出了修复版的xadmin2
https://github.com/vip68/xadmin_bugfix
将代码复制在extra_apps下重新载入即可

解决xadmin" 'xadmin.site' has no attribute 'urls'"

确认在extra_apps下是纯的xadmin文件,而不是将源码下载过来之后进行重命名。

No module named 'django.core.context_processors'

在setting.py中设置media时把django.core.context_processors.media 改成 django.template.context_processors.media,就可以了

Specifying a namespace in include() without providing an app_name

在[app_name]目录下的urls.py中的urlpatterns前面加上app_name='[app_name]', [app_name]代表你的应用的名称。可以参考https://stackoverflow.com/questions/14892462/django-error-upolls-is-not-a-registered-namespace

Responses