把O从ORM中取出。
django-model-values的Python项目详细描述
Django鼓励
直接数据访问,而不是不必要的对象开销。实施
通过对QuerySets
和
Managers
。
目标是为 使用django的orm。特别是避免低效率和竞争 与始终使用对象相关联的条件。
用法
典型的模型使用是冗长、低效和不正确的。
book=Book.objects.get(pk=pk)book.rating=5.0book.save()
通常支持正确的方法,但可以说可读性较差。
Book.objects.filter(pk=pk).update(rating=5.0)
model_values
鼓励使用更好的方法来支持运算符。
Book.objects[pk]['rating']=5.0
类似的查询:
(book.ratingforbookinbooks)books.values_list('rating',flat=True)books['rating']
面向列的语法在面板数据层中很常见,并且
表现力层叠。QuerySets
还支持聚合和
条件句。
books.values_list('rating',flat=True).filter(rating__gt=0)books['rating']>0books.aggregate(models.Avg('rating'))['rating__avg']books['rating'].mean()
Managers
提供各种有效的基于主键的实用程序。
要启用,请在模型中实例化Manager
。和任何习俗一样
Manager
,它不必命名为objects
,但是它被设计为
100%兼容。
frommodel_valuesimportManagerclassBook(models.Model):...objects=Manager()
F
表达式也得到了增强,可以直接使用
模型更改。
frommodel_valuesimportF.filter(rating__gt=0,last_modified__range=(start,end)).filter(F.rating>0,F.last_modified.range(start,end))
安装
$ pip install django-model-values
测试
100%分行覆盖。
$ pytest [--cov]
更改
1.0
- 使用弃用警告移动的更新相关方法
- 可扩展的更改检测和更新
- Django 2.2功能
0.6
- 转换函数
- 命名元组
- 窗口功能
- 距离查找
- Django 2.1功能
EnumField
- 注释
items
- 列选择中的表达式
0.5
F
表达式运算符any
和all
- 空间查找和功能
- django 2.0支持
0.4
upsert
方法- Django 1.9数据库功能
bulk_update
支持其他字段
0.3
- 查找方法和运算符
F
表达式和聚合方法- 数据库函数
- 用于更新和批注的条件表达式
- 批量更新和更改检测
0.2
- 更改检测
- Groupby功能
- 命名元组