在模型保存时替换空格并保存Django CharField
我想在Django中把一个CharField
的内容保存到另一个CharField
里,但在保存模型的时候遇到了问题。我做了以下操作:
class Mall(models.Model):
name = models.CharField(max_length=200)
raw_name = models.CharField(editable=False, max_length=300) #to prevent from appearing in admin
def save(self):
if not self.id:
self.raw_name = self.name.replace(" ", "_")
super(Mall, self).save()
可是,这个方法没有奏效,结果保存的内容是空字符串。我哪里做错了呢?
2 个回答
0
你可以把 raw_name 设置成一个 SlugField。这在使用 预填充字段 时特别有用。
1
根据“重写预定义模型方法”这一段内容:
很重要的一点是,你需要把可以传递给模型方法的参数也传递过去——这就是
*args
和**kwargs
的作用。Django 有时会扩展内置模型方法的功能,增加新的参数。如果你在方法定义中使用*args
和**kwargs
,那么当这些参数被添加时,你的代码就能自动支持它们。
换句话说,你需要把 *args
和 **kwargs
一起传递:
def save(self, *args, **kwargs):
if not self.id:
self.raw_name = self.name.replace(" ", "_")
super(Mall, self).save(*args, **kwargs)