1

我正在像这样在 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)

然后它是空的

4

2 回答 2

1

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

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

编辑1:

由于 django 将再次初始化实例,因此您的值将被覆盖。更改顺序可能会有所帮助。

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

然而。

依靠 Django 的内置功能并传递命名参数将是最简单的方法。 编写一个 __init__ 函数用于 django 模型

于 2013-03-19T03:51:47.370 回答
0

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

如果您想更改默认值,则只需要覆盖保存方法,或者如果您尚未在模型或表单中这样做,则设置一个。

于 2013-03-19T04:23:02.130 回答