Chi*_*fir 3 python django django-queryset
有没有办法让这个查询与 Django 一起工作?
stage = Task.objects.filter(id = input_stage.id)\
.update(start_date = max(data.get('start_date'), F('start_date')),
finish_date = max(data.get('finish_date'), F('finish_date')))
Run Code Online (Sandbox Code Playgroud)
现在我收到一个错误:
TypeError: '>' not supported between instances of 'F' and 'datetime.date'
Run Code Online (Sandbox Code Playgroud)
该max数据库中的两个领域之间是在Django的Greatest[Django的文档],所以查询应改为类似:
from django.db.models import F, Value
from django.db.models.functions import Greatest
Task.objects.filter(
id=input_stage.id
).update(
start_date=Greatest(Value(data.get('start_date')), F('start_date')),
finish_date=Greatest(Value(data.get('finish_date')), F('finish_date'))
)Run Code Online (Sandbox Code Playgroud)
您可能还想将data.get('start_date')等转换为date对象。
记住,.update(..)[Django的DOC]并没有返回QuerySet,但是:
(...) 并返回匹配的行数(如果某些行已经具有新值,则可能不等于更新的行数)。