Как использовать 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 до одной строки, чтобы было красиво?
  • Вопрос задан
  • 2620 просмотров
Решения вопроса 1
Скажем, вот так.

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

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект