django学习(2): models

    上一篇简单介绍了一下django, 这一篇来介绍下django的models, django自带了一个ORM框架, 关于ORM就不多说了,相比sqlalchemy来说要方便很多, 毕竟是定制的嘛. 

    我们来看看django的模型是如何工作的. 首先引入models的包 from django.db import models 模型所需要的东西都在这里面, 对于模型来说一个model就对应一张数据库表, 我们来创建一个模型对象, 直接继承models.Model 打开app下的models.py 文件

1  from django.db import models
2 class People(models.Model):
3     name = models.CharField(max_length=20)  #这个是一个字符列 对应mysql里面的varchar
4     age = models.IntegerField()                          #这是一个数字列 对应mysql里面的integer
5     description = models.TextField()                    #这是一个文本列 对应mysql里面的longtext
6     birthday  = models.DateTimeField()                #时间戳列, 对应mysql里面的datetime
 

    创建写好之后, 我们执行以下python manage.py syncdb 通过这个命令会自动同步你的数据库, 不过要注意的是这个命令只会创建这个表, 而如果你中途对模型改变, 其不会更新数据表

我们通过django的shell来看看结果 输入python manage.py shell, 然后把刚才的People类import进来

输入 from yourapp.models import People 然后创建一个People实例  p = People()

这时候的p实例应该算是一个临时态的实例, 他还没有和数据库进行关联, 当我执行p.save()的时候, django就会自动创建一条数据塞进数据库中, 这时候这个对象就变为持久态. 不过这个时候支持p.save()是不行的 因为我们的属性都是空的, django模型属性默认是不能为空的, 我们来填充下属性

 
    p.name = "xiaoming"
    p.age = 16
    p.description = "study hard"
    p.birthday = datetime.datetime.now() 
 

然后在执行p.save() 这样我们就插入了一条数据使用People.objects.all()我们看到里面已经有一条数据了

我们再来插入一条数据 People(name="xiaozhang", age=18, description="number one", birthday=datetime.datetime(2000,1,1)).save(), 再执行People.objects.all()看到我们已经有两条数据了 默认的如果没有定义主键的话django 会给你创建一个主键id, 我们通过这个id来查找我们的模型, 输入People.objects.get(id=1)

于是第一次save的People就取出来了, 其实objects在django中是一个QuerySet一个查询集合

他的API都在这里面:https://docs.djangoproject.com/en/1.5/ref/models/querysets/

posted on 2013-09-26 23:32  nobutawoproduce  阅读(247)  评论(0)    收藏  举报