首页 > 解决方案 > Django - 仅出于过滤目的修改字段值

问题描述

我想修改some_date_field值只是为了过滤。喜欢使用models.Lookupormodels.Transform但我不想制作原始的 sql 表达式。

例如,使用原始的 ms sql 表达式,我可以编写:

WHERE CONVERT(date, FORMAT(some_date_field, '2021MMdd')) >= @some_var

但我怎么能用 Django 做到这一点?

class SomeModel(models.Model):
    some_date_field = models.DateField()

def replace_year(value):
    return value.replace(year=2021) 

SomeModel.objects.filter(
    # replace_year(some_date_field)__gte=some_var
)

可能吗?

标签: django

解决方案


您可以使用 SomeModel.objects.filter({whatever you want to filter}).update(some_date_field={date_value})

如果您有任何问题,请参阅: https ://docs.djangoproject.com/en/3.2/ref/models/querysets/#django.db.models.query.QuerySet.update


推荐阅读