我有下面的cql表。
session = columns.Date(primary_key=True, partition_key=True, required=True)
entity = columns.Text(primary_key=True, partition_key=True, required=True)
broker = columns.Text(primary_key=True, required=True)
prof = columns.Text(primary_key=True, required=True)
prod = columns.Text(primary_key=True, required=True)
....
从cql引擎阅读文档有一个“filter”方法,我可以用它来过滤(session,entity)->分区键或者任何我想要的东西。
我的问题是,我希望总是按(session,entity)过滤,但也要按可能的字段数过滤,例如prof或prod或两者。
我的职责如下。
def search_by(cls, entity, session,**kwargs): #entity, session, filter
activity_summary = ActivitySummary.objects \
.filter(entity=entity, session=session) \
.filter(kwargs) \
.allow_filtering()
return cls._to_dataframe(activity_summary)
其中**kwargs是我的变量过滤器,一个带有我想要用来过滤它的主键的字典(例如{prof':'maximo'})。
但它不起作用,因为它没有正确匹配字典名和列cql表名。
你知道吗?谢谢。
1条答案
按热度按时间mwngjboj1#
你需要在传递过程中扩展kwargs。
通知
.filter(**kwargs)
而不是.filter(kwargs)