Python Django 1.6,如何为CreateView设置字段默认值
models.pyPython Django 1.6,如何为CreateView设置字段默认值,python,django,django-models,django-generic-views,Python,Django,Django Models,Django Generic Views,models.py 类应用程序(models.Model): name=models.CharField(最大长度=10,默认值=“”) desc=models.CharField(最大长度=10,默认值=“”) views.py class AppCreate(CreateView): template_name=“app/add.html” 模型=应用程序 模板 {%csrf_令牌%} {{form}} 这里有两个问题: 为什么我设置了模型字段的默认值,但它在数据库中不起作用?我检查
类应用程序(models.Model):
name=models.CharField(最大长度=10,默认值=“”)
desc=models.CharField(最大长度=10,默认值=“”)
views.py
class AppCreate(CreateView):
template_name=“app/add.html”
模型=应用程序
模板
{%csrf_令牌%}
{{form}}
这里有两个问题:
默认值实际上纠正了对可选字段的需要。如果未输入任何值,则不会出现错误,但会存储默认值,这当然是一个空字符串(值)。要明确指定可选,请使用
blank=True
desc = models.CharField(max_length=10, blank=True)
可以使用默认值实际上纠正了对可选字段的需要。如果未输入任何值,则不会出现错误,但会存储默认值,这当然是一个空字符串(值)。要明确指定可选,请使用
blank=True
desc = models.CharField(max_length=10, blank=True)
可以使用当您在Django中为模型字段设置默认值时,它不包括在Django生成的SQL模式中 只要您使用ORM创建模型实例,那么这并不重要,因为Django将设置默认值。但是,如果使用原始SQL创建模型实例,则需要确保在需要时使用字段的默认值 有一个用于向SQL架构添加默认值的方法,但它已关闭,无法修复。请记住,
default
可以是可调用的,也可以是常量,因此无法将一些可调用项作为默认值添加到SQL模式中
如果确实需要将默认值添加到SQL模式中,则可以手动运行ALTERTABLE语句,或将其添加到迁移中
要回答第二个问题,请使用
blank=True
,如果CharField
是可选的。在Django中为模型字段设置默认值时,Django生成的SQL模式中不包括该字段
只要您使用ORM创建模型实例,那么这并不重要,因为Django将设置默认值。但是,如果使用原始SQL创建模型实例,则需要确保在需要时使用字段的默认值
有一个用于向SQL架构添加默认值的方法,但它已关闭,无法修复。请记住,default
可以是可调用的,也可以是常量,因此无法将一些可调用项作为默认值添加到SQL模式中
如果确实需要将默认值添加到SQL模式中,则可以手动运行ALTERTABLE语句,或将其添加到迁移中
要回答第二个问题,如果
CharField
是可选的,请使用blank=True
。那么如何定义字段是可选的?如果CharField是可选的,请使用blank=True
。对于CharField
使用null=True
通常是一个坏主意(请参阅以了解原因的解释)。@Alasdair:对不起!!Editedso如何定义字段是可选的?如果字符字段是可选的,则使用blank=True
。对于CharField
使用null=True
通常是一个坏主意(请参阅以了解原因的解释)。@Alasdair:对不起!!编辑