Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django 1.6,如何为CreateView设置字段默认值_Python_Django_Django Models_Django Generic Views - Fatal编程技术网

Python Django 1.6,如何为CreateView设置字段默认值

Python 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.py

类应用程序(models.Model):
name=models.CharField(最大长度=10,默认值=“”)
desc=models.CharField(最大长度=10,默认值=“”)
views.py

class AppCreate(CreateView):
template_name=“app/add.html”
模型=应用程序
模板


{%csrf_令牌%}
{{form}}
这里有两个问题:

  • 为什么我设置了模型字段的默认值,但它在数据库中不起作用?我检查sql语句,没有设置默认值

  • 如果要将desc设置为可选字段(html中的desc字段不是必需的),我应该怎么做


  • 默认值实际上纠正了对可选字段的需要。如果未输入任何值,则不会出现错误,但会存储默认值,这当然是一个空字符串(值)。要明确指定可选,请使用
    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:对不起!!编辑