Значения полей обновления Django / Python (во время сохранения модели)

Я пытаюсь использовать несколько полей в моих моделях django, когда они сохранены. на этот вопрос , в котором был этот ответ:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    def save(self):
        self.name = self.name.title()
        super(Blog, self).save()

Это работает нормально, однако при каждом сохранении требуется дополнительный ввод текста, если я хочу повторить это несколько раз. Я хотел бы создать функцию, которая принимает поля в качестве входных данных и повторно сохраняет их в верхнем регистре на этапе сохранения. Поэтому я написал это, чтобы проверить это:

def save(self):
    for field in [self.first_name, self.last_name]:
        field = field.title()
    super(Artist,self).save()

Однако, если бы я подумал об этом раньше, я бы Я понял, что это просто перезаписывает переменную поля . Я хочу просмотреть список переменных, чтобы изменить их. Я знаю, что некоторые функции изменяют значение на месте, без использования = . Как они это делают? Могу ли я этого добиться?

Или есть более простой способ сделать то, что я делаю? Я иду неправильным путем?


РЕШЕНИЕ: Из первого ответа я сделал функцию:

def cap(self, *args):
    for field in args:
        value = getattr(self, field)
        setattr(self, field, value.title())

и в своих моделях:

def save(self):
    cap(self,'first_name', 'last_name')
    super(Artist,self).save()

5
задан Community 23 May 2017 в 12:15
поделиться