Я пытаюсь использовать несколько полей в моих моделях 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()