我在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)
然后它是空的
答案 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方法,如果您尚未在模型或表单中设置,则设置一个默认方法。