繁体   English   中英

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

[英]Save django charfield with spaces replaced on model save

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

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

根据“覆盖预定义的模型方法”段落:

传递可传递给模型方法的参数也很重要-这就是* 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)

您可以将raw_name设为SlugField。 预填充的字段特别有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM