根据你提供的 SQL 语句,以下是在 Django ORM 中基于你已有的查询基础上,实现相同功能的 Python 代码:
from datetime import timedelta
from django.utils import timezone
from myapp.models import VersionedItem # 替换为你的实际模型路径
from myapp.models import ItemType # 替换为你的实际枚举或常量路径
one_year_ago = timezone.now() - timedelta(days=365)
queryset = (
VersionedItem.objects
.filter(
version_protected=False,
item_type=ItemType.File.value,
item_status=0,
created_at__lt=one_year_ago
)
.order_by('id')
.values(
'id',
'children_item',
'item_type',
'created_at',
'created_by_name',
'file_major_version_number',
'file_version_number',
'file_uuid'
)
)
说明:
created_at__lt=one_year_ago
对应 SQL 中的t.created_at < DATE_SUB(NOW(), INTERVAL 1 YEAR)
。.values(...)
用于指定只查询这些字段,对应 SQL 中的字段列表。- 替换
myapp.models
为你实际的模型路径。
这个 queryset
就是你要的结果,等效于你写的 SQL 查询。