三日目のジャンゴの注意事項

- * -コーディング:UTF-8 - * - 
インポートOSの
os.environ.setdefault(' DJANGO_SETTINGS_MODULE '' day16.settings ' インポートジャンゴ
django.setup()

から app01 インポートモデル


#1 1.all()<クエリセット[ <人:1-ユリ>、<人:2-管理>]> 
RET = models.Person.objects.all() 

2.filter(条件)<クエリセット[<人:1-ユリ>]> 
RET =モデル.Person.objects.filter(ユーザ名= ' ユリ' 

#1 3.get(条件)查不到报错、app01.models.DoesNotExist:人のマッチングクエリは存在しません。RET = models.Person.objects.get(ユーザ名= 'ルーシー')

#1 3.get(条件)が見つかり、オブジェクトリリーを返す。1 
RET = models.Person.objects.get(ユーザ名= ' リリー' 

#1 3.get(条件)は、最後の中で人もうひとつを返した)つ以上またはストリップ2はapp01.models.MultipleObjectsReturned :! GETを(与えられた- ITは2返さRET = models.Person.objects.get(年齢= 18)である

#1 4.exclude(条件)<クエリセットその[<人:2-ADMIN>]> 
RET = models.Person.objects.exclude(ユーザ名= ' リリー' 

5.values()<クエリセット[{ 'PID':1、 'ユーザ名': 'ユリ'、 '年齢' 18、 '誕生':datetime.datetimeの(2019、7、28、14、26、37、621631 、tzinfoの= <UTC>)、 '性別':0}、{ 'PID':2、 'ユーザ名': '管理者'、 '年齢' 18、 '誕生':datetime.datetimeの(2019、7、28、 15、28、2、856414、tzinfoの= <UTC>)、 '性別':0}]> 
RET = models.Person.objects.values()
 のための I におけるRET:
    { 'PID':1、 'ユーザ名' : 'ユリ'、 '年齢' 18、 '誕生':datetime.datetimeの(2019、7、28、14、26、37、621631、tzinfoの= <UTC>)、 '性別':0} 
    { 'PID 「:2 'ユーザ名': '管理者'、 '年齢':18 '誕生':datetime.datetimeの(2019、7、28、15、28、2、856414、tzinfoの= <UTC>)、 '性別':0} 
    #1 プリント(I)
    通過

5.values()<クエリセット[{ 'ユーザ名': 'ユリ'、 '年齢':18}、{ 'ユーザ名': '管理者'、 '年齢':18}]> 
RET = models.Person.objects.values (' ユーザ名'' 年齢' 

6.values_list()<クエリセット[( 'ユリ'、18)、( '管理者'、18)]> 
RET = models.Person.objects.values_list(' ユーザ名'' 年齢' 

#1 7.count()2 
RET = models.Person.objects.count()

#1 8.order_by(字段名)<クエリセット[<人:1-ユリ>、<人:2-管理>]> 
RET = models.Person.objects。ORDER_BY( ' PID ' 

8.order_by(字段名)<クエリセット[<人:2管理者>、<人:1-ユリ>]> 
RET = models.Person.objects.order_by(' -pid ' 

#1 9.reverse()<クエリセット[<人:2管理者>、<人:1-ユリ>]> 
RET = models.Person.objects.order_by(' PID ' ).reverse()

#1 10.first()对象1-ユリ 
RET = モデル。 Person.objects.first()

#1 11.last()对象2-管理 
RET = models.Person.objects.last() 

<クエリセット[{ '年齢':18}、{ '年齢':18}]> 
RET = models.Person.objects.values(' 年齢' 

12。別個の()<クエリセット[{ '年齢':18}]>
RET = models.Person.objects.values(' 年齢' ).distinct() 

13.exists()偽 
RET = models.Person.objects.filter(ユーザ名= ' ルーシー' ).exists() 

13.exists( )真 
RET = models.Person.objects.filter(ユーザ名= ' ユリ' ).exists()


プリント(RET)
# -*- coding: utf-8 -*-
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day16.settings')
import django
django.setup()

from app01 import models


# 1.等于 <QuerySet [<Person: 2-admin>]>
ret = models.Person.objects.filter(pid=2)

# 2.gt 大于greater than
# <QuerySet [<Person: 2-admin>, <Person: 3-lucy>]>
ret = models.Person.objects.filter(pid__gt=1)

# 3.gte 大于等于 greater than or equal to
# <QuerySet [<Person: 1-lily>, <Person: 2-admin>, <Person: 3-lucy>]>
ret = models.Person.objects.filter(pid__gte=1)

# 4.lt 小于 less than
# <QuerySet [<Person: 1-lily>, <Person: 2-admin>]>
ret = models.Person.objects.filter(pid__lt=3)

# 5.lte 小于等于 less than or equal to
# <QuerySet [<Person: 1-lily>, <Person: 2-admin>, <Person: 3-lucy>]>
ret = models.Person.objects.filter(pid__lte=3)

# 6.contains 包含
# <QuerySet [<Person: 2-admin>]>
ret = models.Person.objects.filter(username__contains='ad')

# 7.icontains 忽略大小写的包含
# <QuerySet [<Person: 2-admin>, <Person: 4-Administrator>]>
ret = models.Person.objects.filter(username__icontains='ad')

# 8.in 在...内
# <QuerySet [<Person: 1-lily>, <Person: 3-lucy>]>
ret = models.Person.objects.filter(pid__in=[1, 3])

# 9.range 从...到...
# <QuerySet [<Person: 1-lily>, <Person: 2-admin>, <Person: 3-lucy>]>
ret = models.Person.objects.filter(pid__range=(1, 3))
ret = models.Person.objects.filter(pid__range=[1, 3])

# 10.startswith 以...开头
# <QuerySet [<Person: 2-admin>]>
ret = models.Person.objects.filter(username__startswith='ad')

# 11.istartswith 忽略大小写 以...开头
# <QuerySet [<Person: 2-admin>, <Person: 4-Administrator>]>
ret = models.Person.objects.filter(username__istartswith='ad')

# 12.endswith 以...结尾
# <QuerySet [<Person: 1-lily>, <Person: 3-lucy>]>
ret = models.Person.objects.filter(username__endswith='y')

# 13.iendswith 忽略大小写 以...结尾
# <QuerySet [<Person: 1-lily>, <Person: 3-lucy>]>
ret = models.Person.objects.filter(username__iendswith='y')

# 14.isnull 是空的
# <QuerySet []>
ret = models.Person.objects.filter(age__isnull=True)

# 15.isnull 不是空的
# <QuerySet [<Person: 1-lily>, <Person: 2-admin>, <Person: 3-lucy>, <Person: 4-Administrator>]>
ret = models.Person.objects.filter(age__isnull=False)

# 16. birth__year 出生年份等于
# <QuerySet [<Person: 1-lily>, <Person: 2-admin>, <Person: 3-lucy>, <Person: 4-Administrator>]>
ret = models.Person.objects.filter(birth__year=2019)

# 17.birth_contains 出生日期包括
# <QuerySet [<Person: 1-lily>, <Person: 2-admin>, <Person: 3-lucy>, <Person: 4-Administrator>]>
ret = models.Person.objects.filter(birth__contains='2019-07')
print(ret)
# -*- coding: utf-8 -*-
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day16.settings')
import django
django.setup()

from app01 import models

# 插入出版社数据
# models.Publisher.objects.create(name='沙河出版社1')
# models.Publisher.objects.create(name='人民出版社')
# models.Publisher.objects.create(name='中信出版社11')
# models.Publisher.objects.create(name='工业出版社')
# models.Publisher.objects.create(name='工业出版社')
# models.Publisher.objects.create(name='沙河出版社')

# 插入书籍数据
# models.Book.objects.create(name='沙河小王子112', pub_id=1)
# models.Book.objects.create(name='沙河鸡汤哥', pub_id=1)
# models.Book.objects.create(name='人民币制作指南', pub_id=2)
# models.Book.objects.create(name='python4', pub_id=3)
# models.Book.objects.create(name='python3', pub_id=3)


# 正向查询
ret = models.Book.objects.first()
# 沙河出版社1
print(ret.pub)

# 反向查询1
pub_obj = models.Publisher.objects.first()
# <class 'django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager'>
# print(type(pub_obj.book_set))
# # 不指定related_name='books'
# <QuerySet [<Book: 沙河小王子1111>, <Book: 沙河鸡汤哥>]>
# ret = pub_obj.book_set.all()

# 指定related_name='books'
# <QuerySet [<Book: 沙河小王子1111>, <Book: 沙河鸡汤哥>]>
# ret = pub_obj.books.all()


# 反向查询2
# <QuerySet [<Book: 沙河小王子1111>, <Book: 沙河鸡汤哥>]>
# ret = models.Book.objects.filter(pub__name='沙河出版社1')

# 不指定related_name='books'
# <QuerySet [<Publisher: 沙河出版社1>]>
# ret = models.Publisher.objects.filter(book__name='沙河小王子1111')

# 指定related_name='books'
# <QuerySet [<Publisher: 沙河出版社1>]>
# ret = models.Publisher.objects.filter(books__name='沙河小王子1111')

# 指定related_query_name='bookxxx'
# <QuerySet [<Publisher: 沙河出版社1>]>
ret = models.Publisher.objects.filter(bookxxx__name='沙河小王子1111')

print(ret)

# set创建一对多的关系,外键不能使用[id] 只能写Queryset
pub_obj.books.set(models.Book.objects.all())

# create创建数据并添加一对多的关系
pub_obj.books.create(name='西游记')

# clear 必须是外键可以为空的时候,才能使用
pub_obj.books.clear()
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day16.settings")
import django
django.setup()

from app01 import models

author_obj = models.Author.objects.first()
print(author_obj)
print(author_obj.name)
print(author_obj.books.all())

book_obj = models.Book.objects.first()
print(book_obj.author_set.all())


ret = models.Author.objects.filter(books__name='沙河鸡汤哥')

# all()  所关联的所有对象
author_obj.books.all()
# set()  设置多对多的关系  [id]   [对象]
# author_obj.books.set([1])
# author_obj.books.set(models.Book.objects.filter(id__in=[1,3,5]))


# add()  添加多对多的关系  id   对象
# author_obj.books.add(2)
# author_obj.books.add(*models.Book.objects.filter(id=4))


# remove()  删除多对多的关系  id   对象
# author_obj.books.add(2)
# author_obj.books.remove(*models.Book.objects.filter(id__in=[1,2]))

# clear()  删除所有多对多的关系  id   对象
# author_obj.books.clear()

# create  创建一个对象 并添加多对多的关系
author_obj.books.create(name='西游记',pub_id=1)
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day16.settings")
import django
django.setup()

from app01 import models

from django.db.models import Max,Min,Sum,Avg,Count

ret = models.Book.objects.filter(id__range=[1,4]).aggregate(sum=Sum('price'))

# 统计每一本书的作者个数
ret = models.Book.objects.annotate(count=Count('author')).values()

# 统计出每个出版社买的最便宜的书的价格
# 方式一
ret = models.Publisher.objects.annotate(Min('book__price')).values()

# 方式二 annotate 前的values中的字段就是分组的条件   annotate后不再用values
ret = models.Book.objects.values('pub').annotate(min= Min('price'))

# 统计不止一个作者的图书
ret = models.Book.objects.annotate(count=Count('author')).filter(count__gt=1)

# 查询各个作者出的书的总价格
ret = models.Author.objects.annotate(Sum('books__price')).values()
for i in ret:
    print(i)
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day16.settings")
import django

django.setup()

from app01 import models

from django.db.models import F,Q

# ret = models.Book.objects.filter(sale__gt=F('store')).values()

# models.Book.objects.all().update(pub_id=1)


# obj = models.Book.objects.update(sale=F('sale')*2+13)


#  | 或  & 与  ~
ret = models.Book.objects.filter(Q(~Q(id__gt=4)|Q(id__lt=2))&Q(pub_id=1))


print(ret)
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day16.settings")
import django

django.setup()

from app01 import models

from django.db import transaction
import time

try:
    with transaction.atomic():
        # 一系列操作
        models.Publisher.objects.create(name='xxxxxx')
        time.sleep(5)
        int('aaa')

except Exception as e:
    print(e)

 

おすすめ

転載: www.cnblogs.com/lilyxiaoyy/p/11298339.html