2014-11-03 66 views
1

我试图将保存在django模型中的CharField另存为CharField。我做了以下操作:用模型替换空格保存django 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() 

但是,这不起作用,它保存为空字符串。我究竟做错了什么?

回答

1

按照"Overriding predefined model methods"段:

同样重要的是,你通过参数,可以 传递给模型的方法 - 这是* 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) 
+0

工作。但是,为什么会这样呢? – Newtt 2014-11-03 14:45:48