1、基本操作
模型定义:
class ModelName(models.Model):
field = models.XXField(...)
...
class Meta:
db_table = ...
other_metas = ...
基本查询:
Django通过模型的objects对象查询模型数据如:
Comment.objects.all() //查询comment模型的所有数据
Django有两种过滤器筛选记录:
- filter(**kwargs): 返回所有符合筛选条件的数据集
- exclude(**kwargs): 返回不符合条件的数据集
查询所有2015年非1月的n_visits不为0的记录:
Comment.objects.filter(pub_date_date=2015).exclude(pub_date_month=1).exclude(in_visits=0)
Django还提供用于查询指定条数的数据集的下标操作:
Comment.objects.all() [:10] #查询前10条记录
Comment.objects.all() [10:20] #查询第11-20条
Comment.objects.all() [1] #查询第二条记录
2、关系操作
1)一对一
在任意模型中定义OneToOneField字段,定义相互之间的一对一关系
2)一对多
使用models.ForeignKey类型字段定义外键
3)多对多
在任意模型中定义ManyToManyField字段,定义相互之间的
多对多
关系
3、面向对象ORM
1)抽象类继承
抽象基类的定义通过在模型的Meta中定义属性abstract = True来实现
2)多表继承
多表继承不需要定义特殊的关键字,子类直接继承父类即可,在对模型的编程中,子类仍然可以直接引用父类定义的字段;同时子类可以通过父类对象引用访问父类实例
3)代理模型继承
通过在子类的Meta中定义proxy=True实现,用于管理父类的数据而不实际存储数据