我试图在保存 django 模型时将它们中的许多字段大写。看着这个问题 https://stackoverflow.com/questions/825955/changing-case-upper-lower-on-adding-data-through-django-admin-site,其中有this https://stackoverflow.com/a/826126/907060 answer:
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()