我在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)
然后它变得空虚
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
使用default
模型字段参数设置默认值。如果排除以任何形式编辑字段,将使用默认值。
如果要更改默认值,则只需要覆盖save方法,如果在模型或表单中尚未设置,则设置一个。