Python Django管理表单覆盖默认值
我在django模型构造函数中设置默认值,如下所示Python Django管理表单覆盖默认值,python,django,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) 现在我排除了ad
class Student(models.Model):
name = models.TextField()
location = models.TextField()
def __init__(self, *args, **kwargs):
self.location="sample"
super(Student, self).__init__(*args, **kwargs)
现在我排除了admin表单中的location字段。
但是如果你在学生管理中这样做
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")
编辑1:
由于django将再次初始化实例,因此您的值将被覆盖。
改变顺序可能会有所帮助
def __init__(self, *args, **kwargs):
super(Student, self).__init__(*args, **kwargs)
self.location="sample"
然而。
依靠Django的内置功能和
参数将是最简单的方法。
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的内置功能和
参数将是最简单的方法。
使用模型字段参数设置默认值。如果您将该字段排除在任何形式的编辑之外,则将使用默认值
如果要更改默认值,则只需重写save方法;如果尚未在模型或表单中更改默认值,则只需设置save方法。使用model field参数设置默认值。如果您将该字段排除在任何形式的编辑之外,则将使用默认值
如果要更改默认值,则只需重写save方法;如果尚未在模型或表单中更改默认值,则只需设置save方法。但是“我的方法”有什么问题?您可以更改顺序以使位置分配生效。但是,它仍然可能导致另一个问题。但是我的方法有什么问题?您可以更改顺序以使您的位置分配工作正常。但是,它仍然可能导致另一个问题。发布
StudentAdmin的代码
发布StudentAdmin的代码