在模型保存时替换空格并保存Django CharField

1 投票
2 回答
699 浏览
提问于 2025-05-01 07:47

我想在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)

撰写回答