-->

Django的1.6,如何设置CreateView的字段默认值(Django 1.6, how to

2019-10-19 02:37发布

models.py

class App(models.Model):
    name = models.CharField(max_length=10, default='')
    desc = models.CharField(max_length=10, default='') 

views.py

class AppCreate(CreateView):
    template_name = "app/add.html"
    model = App 

模板

<!DOCTYPE html>
<html lang="en">
<head>   
    <meta charset="UTF-8">
    <title></title>
</head>  
<body>   
    <form action="" method="POST">
    {% csrf_token %}                                                         
    {{form}}
    <input type="submit" value='submit'>
    </form>
</body>  
</html>  

下面两个问题:

  1. 为什么我设置模型字段默认值,但它不能在数据库工作? 我检查SQL语句,没有默认值设定

  2. 如果要设置递减为可选字段(HTML说明字段不是强制性的),什么768,16怎么办?

Answer 1:

默认值实际上为整流可选字段的需要。 如果不输入任何值,你没有得到一个错误,但默认值存储,这当然是一个空字符串(值)。 要指定可选明确,使用blank=True

desc = models.CharField(max_length=10, blank=True)

可使用



Answer 2:

当您设置一个默认在Django模型领域,它不包含在Django在生成的SQL模式。

只要你创建使用ORM模型实例,那么这并不重要,因为Django会设置默认值。 但是,如果您创建使用原始SQL模型实例,那么你需要确保你使用默认值的字段如果需要的话。

有一票470添加默认值的SQL模式,但它已被封闭,不会解决。 记住不是default可以是可调用的,以及恒定的,所以它不会是可能的一些可调用添加为默认SQL模式。

如果你真的需要默认被添加到SQL模式,你可以手动运行ALTER TABLE语句,或将其添加到迁移。

要回答你的第二个问题,使用blank=True如果CharField是可选的。



文章来源: Django 1.6, how to set field default value for CreateView