unable to get repr for <class ‘django.db.models.query.QuerySet

news/2025/2/19 10:25:12

django做一个查询页面,在查询指定category的产品时候,

python">skus = category.sku_set.filter(is_launched=True).order_by(sort_field)

没查到结果:

skus: Unable to get repr for <class 'django.db.models.query.QuerySet'>

检查了下MySQL数据库是有数据的,代码也是正确的,网络也正常。

解决思路:

根据错误提示,模型类没有响应,那么就是数据库的数据无法通过模型类展现出来,MySQL的数据类型或格式与model应该是不匹配。

MySQL里面的数据是提前检查,导入好的,那么就看model.py文件定义sku这个类有没字段定义错了类型。

python">default_image_url = models.CharField(max_length=200, default='', null=True, blank=True, verbose_name='默认图片')

对应MySQL表的字段,发现default_image_url这个字段在MySQL表中的字段是default_image。而且商品不仅包含文字信息,也包含图片,明显这个代表图片的字段定义为charfield是错的。于是改为如下:

python">default_image = models.ImageField(max_length=200, default='', null=True, blank=True, verbose_name='默认图片')

改完在终端进行模型类迁移,输入python manage.py makemigrations和python manage.py migrate.报错了

Running migrations:
  Applying goods.0002_auto_20220220_1055...Traceback (most recent call last):……

pymysql.err.OperationalError: (1091, "Can't DROP 'default_image_url'; check that column/key exists")
django.db.utils.OperationalError: (1091, "Can't DROP 'default_image_url'; check that column/key exists")
解决方法:

打开goods子应用的migrations/0002_auto_20220220_1055迁移文件,注释掉删除、添加字段那一段

python">class Migration(migrations.Migration):

    dependencies = [
        ('goods', '0001_initial'),
    ]

    operations = [
        # migrations.RemoveField(
        #     model_name='sku',
        #     name='default_image_url',
        # ),
        # migrations.AddField(
        #     model_name='sku',
        #     name='default_image',
        #     field=models.ImageField(blank=True, default='', max_length=200, null=True, upload_to='', verbose_name='默认图片'),
        # ),
    ]

因为MySQL表中的字段就是default_image,在数据库中删除name是default_image_url的字段,再添加一个default_image字段,这个操作会找不到default_image_url的,所以会报错。注释后重新运行上面两条迁移指令,成功了。这一次能够拿到查询集数据。

总结:

1.django的文档还是要看的。我一开始纠结default_image改为ImageField,但是MySQL里存的数据是字符串的,不对应啊。后来看文档才知道ImageField是继承自CharField,并多了图片长宽度属性,验证上传的对象是否图像的功能。而且ImageField实例是在数据库创建一个varchar类型的字段,疑惑消除了。

2.学代码要弄懂底层原理,不能只关注如何实现业务逻辑。

文章来源:https://blog.csdn.net/ruanxuan/article/details/123037810
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/1758497.html

相关文章

前端图片无法显示net::ERR_CONNECTION_REFUSED

django做一个电商网站&#xff0c;渲染商品详情页&#xff0c;下面的富文本无法渲染出来。因为富文本里面有包含图片&#xff0c;查看错误如下 CONNECTION REFUSED连接被拒绝&#xff0c;单独访问http://image.meiduo.site:8888/也是拒绝连接请求。 解决方法&#xff1a; 错误…

django模型类迁移出错解决

给model.py文件增加新的模型类&#xff0c;执行迁移时候发现出现如下错误 看了0003_auto_xxxx迁移文件&#xff0c;发现原来之前我修改过一个模型的字段名&#xff0c;default_image_url改为default_image。执行python manage.py makemigrationgs后&#xff0c;最新的迁移文件会…

状态码403(Forbidden)

用django做了一个统计分类商品浏览量的视图&#xff0c;发送post请求时候&#xff0c;出现403状态码 检查代码没问题。查看后端报错信息&#xff0c;有提到没找到csrftoken。查看HTML和js文件&#xff0c;都没有获取cookie信息&#xff0c;前端页面的application--storage也没有…

IP地址变了,如何更改fastfds和elasticsearch配置

1.先将运行中的fastfds和elasticsearched服务关掉 sudo docker container stop 容器名或容器id 然后删除掉他们的容器 sudo docker container rm 容器名或容器id 2.重新启动创建、启动fastfds a.开启tracker sudo docker run -dit --name tracker --networkhost -v /var/…

TypeError: __init__() got an unexpected keyword argument ‘app_private_key_path

django项目对接支付宝支付接口的时候报错如下&#xff1a; debugsettings.ALIPAY_DEBUG TypeError: __init__() got an unexpected keyword argument app_private_key_path 代码如下 # 创建支付宝支付接口的sdk对象alipay AliPay( # 传入公共参数,对接任何接口都要传递的a…

MySQL主从同步时,主机show master status;出现empty set

先查看是否开启日志&#xff0c;到/etc/mysql/mysql.conf.d/下查看配置文件&#xff0c;sudo vim mysqld.cnf看&#xff0c; 经查看login_bin xxxx没有被注释掉&#xff0c;一切正常。 原来是之前我修改保存后&#xff0c;没有重启mysql服务。像这些服务类的运行&#xff0c;…

ModuleNotFoundError: No module named ‘xxxx‘

用django做了一个前后端不分离的电商网站&#xff0c;现在要用DRF框架做前后端分离的电商后台&#xff0c;打开之前做的前台代码运行下&#xff0c;发现如下错误&#xff1a; Unhandled exception in thread started by <function check_errors.<locals>.wrapper at …

print get_file_ext_name(‘/bc.tar.gz‘) SyntaxError:invalid syntax

使用python 3.6&#xff0c;django1.11.11 框架是DRF&#xff0c;图片存储用Fastfds&#xff0c;做电商网站后台&#xff0c;实现图片的增删改查&#xff0c;结果报错如下图&#xff1a; 解决&#xff1a; 看报错内容&#xff0c;点开对应文件是fdfs_client.py&#xff0c;发现…