保存django charfield,并在模型保存中替换空格

时间:2014-11-03 14:40:17

标签: python django

我试图将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()

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

2 个答案:

答案 0 :(得分:1)

根据"Overriding predefined model methods"段落:

  

通过可能的参数也很重要   传递给模型方法 - 这就是* args,** kwargs位的作用。   Django将不时扩展内置功能   模型方法,添加新参数。如果你使用* args,** kwargs in   您的方法定义,保证您的代码将   添加后自动支持这些参数。

换句话说,您需要传递*args**kwargs

def save(self, *args, **kwargs):
    if not self.id:
        self.raw_name = self.name.replace(" ", "_")
    super(Mall, self).save(*args, **kwargs)

答案 1 :(得分:0)

您可以将raw_name设为SlugField。对prepopulated fields

特别有用