장고 모델의 여러 필드를 저장할 때 대문자로 표시하려고합니다. this 대답이 있던, this question 보면 :이 여러 번 반복 할 경우,이 잘 작동Django/Python 업데이트 필드 값 (모델 저장 도중)
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()
는,이 단순히 field
변수를 덮어 쓸 것을 깨달았을 것이다. 변수를 변경하기 위해 변수 목록을 순환시키고 싶습니다. =
을 사용하지 않고 일부 기능이 값을 변경한다는 것을 알고 있습니다. 그들은 어떻게합니까? 나는 그것을 얻을 수 있을까?
아니면 내가하고있는 일을하는 더 간단한 방법이 있습니까? 내가 잘못 가고있는거야?
해결책 :
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()
정말 고마워요. 이건 내가 찾고 있던 것입니다! –
도움이되어서 기쁩니다! –