学习Django过程踩的坑

适用于Django2版本的Xadmin下载地址

其他配置:基础配置

由于版本问题,加入xadmin后各种报错,基本上每个文件都修改过!超级生气!!!
下面说明几处错误修改办法:
版本描述:
Django 3.1.1
django-crispy-forms 1.9.2
django-formtools 2.2
django-import-export 2.3.0
django-reversion 3.0.8
future 0.18.2
Pillow 7.2.0
PyMySQL 0.10.1
six 1.15.0

添加环境变量

# 在setting中添加
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

中INSTALLED_APPS中添加:

'xadmin',
'crispy_forms',

在urls中添加

import xadmin
path('xadmin/', xadmin.site.urls),

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?:

import pymysql
pymysql.install_as_MySQLdb()

TypeError: init() missing 1 required positional argument: ‘on_delete’:

# 添加
把content_type = models.ForeignKey(ContentType)修改为content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE)

django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead:

# namespace的语法:
# path(‘url地址’,include((‘app的url文件’,‘命名’),namespace=‘命名’))
path('user/', include('user.urls', 'urls'), namespace='user)

ImportError: cannot import name ‘FieldDoesNotExist’ from ‘django.db.models.fields’:

from django.core.exceptions import FieldDoesNotExist

TypeError: init() takes 1 positional argument but 6 were given:

把forms.Field.__init__(self, required, widget, label, initial, help_text, *args, **kwargs) 修改成forms.Field.__init__(self)

AttributeError: ‘Settings’ object has no attribute ‘MIDDLEWARE_CLASSES’:

把:
if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE_ClASSES:
改成:
if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE:

ImportError: cannot import name ‘QUERY_TERMS’:

from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS修改为:
from django.db.models.sql.query import LOOKUP_SEP, Query

AttributeError: ‘CharField’ object has no attribute ‘rel’:

if isinstance(field.rel, models.ManyToOneRel):
    related_fields.append(field_name)
修改为
if isinstance(field.remote_field, models.ManyToOneRel):
    related_fields.append(field_name)

IndexError: list index out of range:

把 input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).replace(
                '/><input', '/>\n<input').split('\n') if ht != '']
替换为
    input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).replace(
        '><input', '>\n<input').split('\n') if ht != '']

‘ManyToOneRel’ object has no attribute ‘to’ :

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

AttributeError: ‘ForeignKey’ object has no attribute ‘re’:

#data_list =filter_field_obj.rel.to.objects.all()这个不行换成以下代码
data_list = filter_field_obj.remote_field.model.objects.all() 

参考博客1

参考博客2

问题太多,不一一列举!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值