一、字段类型

二、字段选项说明

三、内嵌类参数说明
abstract = True
db_table = 'table_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')
models.Article.objects.all().filter(title='xiaohei').values()
models.Article.objects.all().count()
models.Article.objects.raw('select * from user_article;')
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表
