对于django,F()没有len类型

时间:2018-05-20 21:16:52

标签: python django function types expression

我正在尝试将F()用于我的查询集

我之前有关于在F() expressions in django keeps giving me 0

中使用F()的问题

但不知何故,我想,我不能使用F()的长度来完成我的功能。起初我没理解为什么然后我想到最后我试图做len(F())这就是我收到错误的原因,因为F()<class 'django.db.models.expressions.F'>的类型而不是string or number } type。

有没有办法获得F()值,以便我可以使用len(F())

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

只要您希望将其作为数据库中的单个查询,就必须使用SQL,因此您不能只应用任意python函数。要获取char列的长度,Django(https://docs.djangoproject.com/en/1.11/ref/models/database-functions/#django.db.models.functions.Length)中有一个Length表达式,您可以像Length(F('name'))一样使用它。它将为生成的SQL添加必要的代码,以便数据库做正确的事情。

最后,如果您需要将某些列设置为另一列值的长度,则可以使用Model.objects.update(name_length=Length(F('name')))