一对多模型:关系字段定义在多的一端中;一对多中,外键对应的是主表的一个对象,而不是一个单纯的idpython
多对多模型:自动生成第三张表,第三张表为关系表;先实例化对象添加两张表,而后再添加关系数据库
生成迁移文件: python manage.py makemigrationsdjango
执行迁移(生成表): python manage.py migrateurl
null:容许为空,默认值是 Falsespa
db_column:字段的名称,若是未指定,则使用属性的名称code
元选项对象
设置数据库里的表名,通常数据库迁移后的表名为:应用名_模型类名blog
class Meta():排序
tb_table = '表名'索引
模型类操做:
1.实例化模型类:ob = models.Users()
2.添加实例属性方法:①.ob.name = "张三"
data = {'name':'张三'}
②.ob = models.Users(**data)
3.实例的方法: delete:删除
save():保存
模型查询集:
values():一个对象构成一个字典,而后构成一个列表返回
返回单个值的方法
其余查询方法:
contains 包含: ob = models.Uses.objects.filter(name__contains='jack')
in:是否包含在范围内 :ob = models.Uses.objects.filter(name__in=['jack','rose'])
gt、gte、lt、lte:大于、大于等于、小于、小于等于 ob = models.Uses.objects.filter(id__lte=5)
extra查询方法:
ob = Types.objects.extra(select = {'paths':'concat(path,id)'}).order_by('paths') #等同于 select *,concat(path,id) as paths from types order by paths;
Q对象复杂查询(filter至关于and查询,而Q对象查询至关于or查询)
from django.db.models import Q
ob = Goods.objects.filter(Q(id__contains=v)|Q(title__contains=v))
class Users(models.Model):
username = models.CharField(max_length=10)
password = models.CharField(max_length=77)
age = models.IntegerField()
sex = models.CharField(choices=(('0','女'),('1','男')),max_length=10)
email = models.CharField(max_length=30,null=True)
phone = models.CharField(max_length=11)
pic_url = models.CharField(max_length=255,null=True)
status = models.IntegerField(default=0)
addtime = models.DateTimeField(auto_now_add=True)
class Meta():
db_table = "Users"