【问题标题】:How to perform model.objects.get(**kwargs) with case insensitive如何在不区分大小写的情况下执行 model.objects.get(**kwargs)
【发布时间】:2019-06-26 09:40:49
【问题描述】:

我想通过以不区分大小写的方式使用字典来获取我的一个 Django 模型的实例。目前我正在使用:

my_model.objects.get(**dictionary)

但是,如果我的字典中的内容与实例的字段之间存在小写/大写的差异,我不会得到该实例。

你认为有一种干净的方式来执行这个操作吗?

【问题讨论】:

  • 不,实际上 Django 不知道你如何调用它。如果您调用some_function(**some_dict),Python 将简单地将其替换为some_function(key1=val1, key2=val2) 等。这只是参数解包。
  • 感谢您和这个解决方案:stackoverflow.com/questions/11743207/…,我找到了方法。我只需将字典的键从“key”重命名为“key__iexact”,它就可以工作了!跨度>

标签: django python-3.x


【解决方案1】:

Django 使用WHERE 过滤器完全从您提供的字典的键中加载对象。由您提供field lookups;你可以使用iexact field lookup type,但你需要在文本字段上使用它。

所以如果你想匹配一个特定的字符串字段,不区分大小写,将__iexact添加到dictionary中的键;例如{'foo': 'bar'} 变为 {'foo__iexact': 'bar'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2020-11-17
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多