Django管理员表格覆盖默认值

时间:2013-03-19 03:36:11

标签: python django

我在django模型构造函数中设置默认值,如此

class Student(models.Model):
  name = models.TextField()
  location = models.TextField()
   def __init__(self, *args, **kwargs):
        self.location="sample"
        super(Student, self).__init__(*args, **kwargs)

现在我在管理表单中排除位置字段。 但是如果在StudentAdmin中这样做

   def save_model(self, request, obj, form, change):

        raise Exception(obj.location)

然后它是空的

2 个答案:

答案 0 :(得分:1)

django有自己的方法来设置默认值。

class Student(models.Model):
    name = models.TextField()
    location = models.TextField(default="sample")

EDIT1:

因为django会再次初始化实例,所以你的值将被覆盖。    改变顺序可能有所帮助。

def __init__(self, *args, **kwargs):        
    super(Student, self).__init__(*args, **kwargs)
    self.location="sample"

但是。

  

依靠Django的内置功能并传递命名   参数将是最简单的方法。   Writing a __init__ function to be used in django model

答案 1 :(得分:0)

使用default模型字段参数设置默认值。如果您以任何形式排除编辑字段,将使用默认值。

如果您想更改默认值,则只需覆盖save方法,如果您尚未在模型或表单中设置,则设置一个默认方法。