Я знаю, как обычно делать динамические фильтры в Django, используя ** kwargs, однако, поскольку я относительно новичок в 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)
================== РЕДАКТИРОВАТЬ===================
Я прошу прощения за то, что не сформулировал исходный вопрос более четко.Я не уверен, что это улучшит ситуацию:
У меня есть МНОГИЕ различные объекты и дочерние объекты для фильтрации на основе этих общих сценариев аргументов.По этой причине я не хочу индивидуально определять словарь для каждого варианта kwargs, как любезно предложил @ S.Lott.Это было бы так же, как вводить аргументы для каждого фильтра.
Я просто пытаюсь найти наиболее эффективный способ сделать это.Кажется, в этом конкретном случае должен быть лучший способ, чем определять словари с несколькими аргументами, которые каждый раз повторяли бы объявление ('alpha', 'beta', 'gamma')
.