Django QuerySet使用values方法:动态指定查询字段的实现疑问
动态字段查询的Django包装函数实现
完全可以搞定这个需求!Django的values()方法本身就支持接收可变数量的位置参数(也就是*fields),所以你的包装函数只需要把接收到的参数原封不动传递给它就好。
这里是完整的可运行函数示例:
def get_values(self, *fields): # 直接将*fields传递给values(),实现动态字段查询 return MyModel.objects.values(*fields)
额外细节说明:
- 当你调用
get_values('field1', 'field2')时,内部会自动转为MyModel.objects.values('field1', 'field2'),和你直接调用的效果完全一致。 - 如果不传任何字段(比如
get_values()),就等价于MyModel.objects.values(),会返回包含模型所有字段的字典查询集。 - 要是你想给无参调用设置默认行为(比如只返回主键),可以加个简单的判断:
def get_values(self, *fields): # 无参时默认只返回id字段 if not fields: fields = ('id',) return MyModel.objects.values(*fields)
这样就能完美适配你无法预先确定字段数量的场景,灵活获取需要的字段数据。
内容的提问来源于stack exchange,提问作者Mattia Paterna
相关产品推荐
相关产品推荐

