Задать вопрос

Как использовать 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 до одной строки, чтобы было красиво?
  • Вопрос задан
  • 2631 просмотр
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Решения вопроса 1
Скажем, вот так.

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

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

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