Django管理员表格覆盖默认值

问题描述 投票:1回答:2

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

然后它变得空虚

python django
2个回答
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"

HOWEVER.

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.