我试图将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()
但是,这不起作用,它保存为空字符串。我做错了什么?
答案 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
特别有用