【发布时间】:2011-02-01 18:43:17
【问题描述】:
我知道通常如何使用 **kwargs 在 Django 中进行动态过滤,但是由于我对 python 比较陌生,所以我无法弄清楚如何做一些与此处提出的其他相关问题略有不同的事情.
我想动态地将相同的过滤器应用于不同的模型子级。我意识到这是不正确的,但它应该给你我想做的事情的要点:
self.type = object.__class__.__name__
if self.type = 'Running':
kwargs = '%s__%s__%s' % ('alpha', 'beta', 'gamma')
elif self.type = 'Jumping':
kwargs = '%s__%s' % ('alpha', 'beta')
elif self.type = 'Playing':
kwargs = '%s' % ('alpha',)
self.customers = Fest.objects.filter(foo__kwargs = object)
self.customers = Fest.objects.filter(bar__kwargs = object)
self.customers = Jest.objects.filter(baz__kwargs = object)
===================编辑===================
对于没有更清楚地说明原始问题,我深表歉意。不过,我不确定这是否会让它变得更好:
我有许多不同的对象和对象子对象要根据这些常见的参数场景进行过滤。出于这个原因,我不想像@S.Lott 亲切地建议的那样,为每个 kwargs 变体单独定义一个字典。这就像为每个过滤器输入参数一样重复。
我只是想找出最有效的方法。在这种特殊情况下,似乎必须有更好的方法,而不是定义多个参数字典,每次都会重复 ('alpha', 'beta', 'gamma') 声明。
【问题讨论】: