Как выполнить однотипное действие с разными полями модели в Django/Python

Например, есть модель

class Model(models.Model):
    field1 = models.CharField()
    field2 = models.CharField()
    field3 = models.CharField()
    ...

В Views я пишу метод, в котором хочу по очереди обратиться к полям экземпляра модели и изменить их значение, например с помощью такой конструкции

model.field1.some_functions(args1)
model.field2.some_functions(args2)
model.field3.some_functions(args3)
...

Могу ли я организовать некий перебор по полям модели, указав выполнить одинаковое действие, вместо того, чтобы явно прописывать для каждого поля метод работы с ним?

Вопрос не столько про django, сколько про python в целом.


Ответы (1 шт):

Автор решения: Алексей Власов

Вы можете использовать getattr.

Код:

select_fields = ['field1', 'field2', 'field3', ... ] # нужные поля
for field_str in select_fields:
    # field_str - это строка (название поля)
    field = getattr(model, field_str) # model - это ваш класс
    field.somefunction()

У getattr мы первым аргументом передаём класс, а вторым название элемента в виде строки.

Надеюсь помог

→ Ссылка