Как использовать getattr/setattr в запросе .update() в django?

Имеется конструкция:
rewarded_parents_fields = ('first_parent_rewarded',
                           'second_parent_rewarded',
                           'third_parent_rewarded',
                           'fourth_parent_rewarded', )

def pay_to_parent(self, line, five_per_period):
        ...
        if line == 1:
            TreeNode.objects.filter(id=self.id).update(first_parent_rewarded=True)
        elif line == 2:
            TreeNode.objects.filter(id=self.id).update(second_parent_rewarded=True)
        elif line == 3:
            TreeNode.objects.filter(id=self.id).update(third_parent_rewarded=True)
        elif line == 4:
            TreeNode.objects.filter(id=self.id).update(fourth_parent_rewarded=True)


Как мне сократить pay_to_parent до одной строки, чтобы было красиво?
  • Вопрос задан
  • 2628 просмотров
Решения вопроса 1
Скажем, вот так.

TreeNode.objects.filter(id=self.id).update(**{rewarded_parents_fields[line - 1]: True})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы