我正在尝试将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())
?
提前感谢您的帮助。
答案 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')))