Django使用Case手动控制排序
手动控制排序使用Django update方法,所有涉及的数据每一条都会执行一次SQL update语句,MySQL有case语句可将所有影响的数据进行一次性更改,查看Django文档支持case语句 https://docs.djangoproject.com/en/2.2/ref/models/conditional-expressions/ >>> a_month_ago = date.today() - timedelta(days=30) >>> a_year_ago = date.today() - timedelta(days=365) >>> # Update the account_type for each Client from the registration date >>> Client.objects.update( ... account_type=Case( ... When(registered_on__lte=a_year_ago,... then=Value(Client.PLATINUM)),... When(registered_on__lte=a_month_ago,... then=Value(Client.GOLD)),... default=Value(Client.REGULAR) ... ),... ) >>> Client.objects.values_list(‘name‘,‘account_type‘) <QuerySet [(‘Jane Doe‘,‘G‘),(‘James Smith‘,‘R‘),(‘Jack Black‘,‘P‘)]>
根据示例编写自己的应用 增加新数据: max_sort = Kol.objects.filter(channel_type_kol=kol_type).order_by(‘sort‘).last().sort 更改排序: max_sort = Kol.objects.filter(channel_type_kol=channel_type).order_by(‘sort‘).last().sort 删除一条数据: info = Kol.objects.get(id=id)Kol.objects.filter(channel_type_kol=info.channel_type_kol).update(????sort=Case(????????When(sort__gt=info.sort,?????????????then=F(‘sort‘) - 1),????????default=F(‘sort‘)????))info.delete() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 快速入门python学习笔记
- Django1.6 transaction.atomic问题
- python中的字典用法示例
- 【Python】使用numpy时警告:RuntimeWarning溢出报错的屏蔽
- python-Doc2Vec和分类-非常差的结果
- Django在使用models生成数据库表时报错: __init__() missi
- 用python处理图片之打开\显示\保存图像的方法
- 安装fastDFS的依赖包fdfs_client报错解决方法
- 是否有一种方法可以用biopython从pubmed文章中获取完整的摘
- python – Django – 在model.Imagefield中裁剪并保存Image