Zac*_*ach 33 python mysql django
我想通过ORM运行django更新,看起来像这样:
MyModel.objects.filter(**kwargs).update(my_field=F('my_other_field')+'a string')
Run Code Online (Sandbox Code Playgroud)
这会导致MySQL抛出异常.反正有没有编写原始SQL吗?
tom*_*p83 70
我有类似的问题; 基本上我想连接两个字段来获取用户的全名.我用这种方式解决了(但必须说我使用的是Postgres):
from django.db.models.functions import Concat
from django.db.models import F, Value, CharField
AnyModel.objects.filter(**kwargs).annotate(full_name=Concat(F('model__user_first_name'), Value(' '), F('model__user_last_name'), output_field=CharField()))
Run Code Online (Sandbox Code Playgroud)
其中,F('...')将其参数作为查询进行评估,因此您可以像在filter/get中那样查询模型本身的字段,或跨模型,而Value('...')从字面上评估它的参数(在我的例子中,我需要在first_name和last_name之间放置一个空格),而output_field = ...指定注释字段的类型(我想成为CharField).有关更多信息,您可以阅读有关Concat的Django文档
希望它对那里的人有所帮助.干杯
Ale*_*zin 20
您可以使用Concat函数https://docs.djangoproject.com/en/1.9/ref/models/database-functions/#concat
from django.db.models.functions import Concat
from django.db.models import Value
MyModel.objects.filter(**kwargs).update(my_field=Concat('my_other_field', Value('a string'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12791 次 |
| 最近记录: |