今天在学习Django的时候,看到了字段Null属性,尝试了一下,但是觉得有问题,所以想请教一下,下面分别列出我的代码
Model代码
class Person(models.Model): name = models.CharField(max_length=30, null=False) class Meta: db_table = 'Person'
View代码
def add(request): p1 = Person() p1.save() p2 = Person(name='') p2.save() return HttpResponse('OK')
下面是在命令行使用desc命令查看的表定义。
+-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(30) | NO | | NULL | | +-------+-------------+------+-----+---------+----------------+
执行程序,p1和p2竟然都插入到了数据库里面,下面是数据库中的值。
mysql> select * from Person; +----+------+ | id | name | +----+------+ | 1 | | | 2 | | +----+------+ 2 rows in set (0.00 sec)
使用Person.objects.get(id=1),Person.objects.get(id=2)分别得到两个对象,查看他们name属性的类型,都为<type 'unicode'>,所以请大神帮我解释一下。谢谢了。
另外我现在在model中指定name属性null=False,怎样造数据才能在插入name指的时候报错,也就是怎样造出name属性为null的值。
blank=False
???
null=False表示不能为空。CharField和TextField字段都有默认值default='',所以满足 null=False的条件。
https://docs.djangoproject.com/en/1.8/ref/models/fields/#null版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。