【发布时间】:2016-08-10 10:24:19
【问题描述】:
我正在研究其他人编写和配置的 django rest-api 框架,但遇到了一个我找不到任何好的解决方案的问题。
有一个模型包含“YAMLField”类型的字段。在尝试检索此字段成员时,它被转换为 OrderedDict(不太清楚这种转换是如何以及在何处发生的......)。
现在,我有这个模型的查询集。我了解如何根据简单属性过滤查询集,但是如何根据此字典过滤它?
例如,此查询集中的每个条目(即 MyModel 实例)包含:
MyModel.myDictionary == {'firstKey': 'firstVal', 'secondKey':'secondVal}
现在我想从这个查询集中获取所有条目,其中:
myDictionary = {'firstKey': 'Something'}
意思是,我要过滤的字典可能只包含键的子集。
我找不到任何解决方案或直接的方法来做到这一点,导致我迭代查询集并为每个条目迭代字典。 这感觉开销太大了...
【问题讨论】:
-
如果我理解正确并且您的字典键是模型的主键,那么您可以使用 my_dictionary.keys() 将所有键作为列表并在查询集字段查找中使用它,例如 MyModel.objects。过滤器(id__in=my_dictionary.keys())。不要忘记用下划线而不是 CamelCase 来命名 PEP8 风格的变量和字段。
-
感谢您的回答。字典键不是主模型键。字典是模型键,但我想根据字典的内容进行过滤。我最终使用了这是一个 YAMLField 的事实,并在我连接了我想从该字典中过滤的所有值之后,在该字段中进行了正则表达式搜索。
标签: python django filter django-rest-framework