wangyajuanjuan

一、字段类型

 

 

 


二、字段选项说明

 

 

 


三、内嵌类参数说明
abstract = True
db_table = \'table_name\' #表名,默认的表名是app_name+类名
ordering = [\'id\',\'-create_time\'] #排序规则,按照哪个字段排序,加上负号是降序
unique_together = (\'name\',\'id_card\') #联合主键
verbose_name = \'用户表\'#表的中文名
verbose_name_plural = \'用户表\'#表的中文名

 


四、同步到数据库
python manage.py makemigrations #生成迁移文件
python manage.py migrate #同步到数据库中

五、QuerySet增删改查
#创建
obj = models.Article.objects.create(title=\'title_model\',desc=\'desc1\',content=\'content\')
obj.title = \'new_title\'
obj.save()

obj2 = models.Article(title=\'title_model\',desc=\'desc1\',content=\'content\')
obj2.save()

#查询
models.Article.objects.get(id=1)#单个查询,条件只能是唯一的,否则会报错
models.Article.objects.filter(title=\'xiaohei\',desc=\'desc1\')#多条件查询,返回多条数据,写多个参数就是and
models.Article.objects.all().filter(title=\'xiaohei\').values()#字典显示
models.Article.objects.all().count()#个数
models.Article.objects.raw(\'select * from user_article;\') # 执行原生sql
models.Article.objects.filter(title__contains=\'模糊查询\')
models.Article.objects.filter(title__endswith=\'开头\')
models.Article.objects.filter(title__startswith=\'结尾\')
models.Article.objects.filter(title__in=[\'title1\',\'title2\'])
models.Article.objects.filter(title__isnull=True)#为空
models.Article.objects.exclude(title__in=[\'title1\',\'title2\'])#排除
models.Article.objects.filter(read_count__gt=1)
models.Article.objects.filter(read_count__gte=1)
models.Article.objects.filter(read_count__lt=1)
models.Article.objects.filter(read_count__lte=1)
models.Article.objects.filter(read_count__range=(1,2,3))

修改
art = models.Article.objects.get(pk=1)
art.title = \'t1223\'
art.save()

models.Article.objects.filter(title__isnull=True).update(title=\'小黑\') #批量修改
models.Article.objects.all().update(title=\'全部修改\')

删除
models.Article.objects.get(pk=1).delete()
models.Article.objects.filter(title__isnull=True).delete()
models.Article.objects.all().delete()


#外键操作
obj = models.Article.objects.get(id=1)
obj.nav_id = 2 #获取外键信息
print(obj.nav.name) #获取外键信息
models.Article.objects.filter(nav__name=\'abc\') #按照外键的字段筛选,外键名称__字段名

反向查询
art_obj = models.Article.objects.get(pk=1)
nav_obj = models.Nav.objects.get(pk=2)
print(nav_obj.article_set.filter())#外键反向查询
print(nav_obj.article_set.count())#外键反向查询
nav_obj.article_set.add(art_obj)#添加
nav_obj.article_set.remove(art_obj)#删除
nav_obj.article_set.clear()#清空

 

 

多对多

models.CaseSet.objects.create(name=\'主流程用例\',desc=\'主流程\')
models.CaseSet.objects.create(name=\'冒烟用例\',desc=\'冒烟用例\')

models.Case.objects.create(title=\'登录\')
models.Case.objects.create(title=\'注册\')
models.Case.objects.create(title=\'订购\')
models.Case.objects.create(title=\'支付\')
models.Case.objects.create(title=\'充值\')
models.Case.objects.create(title=\'发货\')

c1 = models.Case.objects.get(pk=1)
c2 = models.Case.objects.get(pk=2)
c3 = models.Case.objects.get(pk=3)
s1 = models.CaseSet.objects.get(pk=1)
s2 = models.CaseSet.objects.get(pk=2)

s2.case_set.add(c2,c3)
s2.case_set.remove(c2,c3)
s2.case_set.clear()#清空

print(c2.case_set.all()) #查看用例在几个集合里面
print(s2.case_set.all()) #查看集合里面有多少用例


一对一
from hashlib import md5
models.Account.objects.create(account_id=md5(\'niuhanyang\'.encode()).hexdigest())
models.Account.objects.create(account_id=md5(\'niuhanyang2\'.encode()).hexdigest())
models.Account.objects.create(account_id=md5(\'niuhanyang3\'.encode()).hexdigest())

models.User.objects.create(username=\'niuhanyang\',password=\'123456\',account_id=\'58e006ecfce801c5e98311c96d32510f\')
u = models.User.objects.get(pk=1)
print(u.account_id)
print(u.account.money)

acc = models.Account.objects.get(pk=\'58e006ecfce801c5e98311c96d32510f\')
print(acc.user.username)
print(acc.user.password)


表结构如下图:
一对一,user表和account表

 

 

 

nav表,外键,一对多

 

 

 

case表和case_set表

 

分类:

技术点:

相关文章: