django - 如何对 Django 查询集中选择的值应用函数?

标签 django django-queryset

假设我在 Django 中有以下模型

class Book(models.Model):
    id = models.AutoField(primary_key=True)
    volumes = JSONField()

我想获取所有书籍的标题长度作为值 -

[
    {
        "id": 1,
        "volumes": [
            {
                "order": 1
            },
            {
                "order": 2
            }
        ],
        "length_of_volumes": 2
    },
]

我尝试了以下方法,但这不是正确的方法,因为它不是 CharField -

from django.db.models.functions import Length
Books.objects.all().values('id', 'title', length_of_valumes=Length('volumes'))

最佳答案

len('title') 将仅确定 字符串 'title' 的长度,因此它有五个字符,因此 .values(…),则使用 .values(length_of_title=5)

您可以使用Length expression [Django-doc] :

from django.db.models.functions import <b>Length</b>

Books.objects.values('id', 'title', length_of_title=<b>Length('title')</b>)

Note: normally a Django model is given a singular name, so Book instead of Books.

关于django - 如何对 Django 查询集中选择的值应用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65197772/

相关文章:

python - 类型错误 : 'instancemethod' object has no attribute '__getitem__' in Celery

python - 在 Django 中,当 child 保存在外键关系中时,如何通知 parent ?

python - 为什么在 Django APITestCase 中运行两个测试时出现错误?

python - 如何使用 Universal Feed Parser 删除 html 标签?

django - 使用基于类的 View 查询多个模型

django - 过滤然后遍历嵌套的Django模型

django - select_related 与反向外键

django - 使用 Q 对象时如何对查询结果进行排序

python - Django 查询上的 value() 方法后的计数和最大值

python - Django 在 GROUP BY 后获取 Max 的 ID