您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django:使用values()和get_FOO_display()吗?

Django:使用values()和get_FOO_display()吗?

通常,使用基于Manager的查询返回模型对象可能会更好,更容易。听起来您原始方法的问题不在于您要遍历查询集(如@ahmoo所说,这不是性能问题),而是在迭代循环中您正在获取其他相关对象,需要一个或多个对象每个记录的其他查询

有几种方法可以提高仍返回模型实例的查询性能

听起来最相关的是select_related(),它将有效地对初始查询进行表联接,以包含与外键相关的所有对象的数据。

如果这还不够,您还可以使用来将数据添加到模型实例中extra(),从而可以将子查询粘贴到sql中。

如果所有操作失败,您可以使用Manager实例上的方法执行原始SQL查询.raw(),该实例仍将返回模型实例。

基本上,如果您可以在sql中以每个实例只给您一行的方式进行操作,则有一种方法可以在Django中进行操作并返回模型实例。

不过,要回答您的原始问题,您可以通过Field类获取显示名称-这很丑陋:

def get_field_display(klass, field, value):
    f = klass._Meta.get_field(field)
    return dict(f.flatchoices).get(value, value)

# usage
get_field_display(User, 'name', 'JSmith001')
Go 2022/1/1 18:47:24 有316人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶