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