久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

Django模型層實現(xiàn)多表關(guān)系創(chuàng)建和多表操作

瀏覽:2日期:2024-09-03 14:03:58
目錄前言創(chuàng)建表關(guān)系多表數(shù)據(jù)操作 - 增刪改一對多&一對一關(guān)系 - 增刪改增加數(shù)據(jù)刪除數(shù)據(jù)修改數(shù)據(jù)多對多關(guān)系 - 增刪改增加多對多關(guān)系 - add()刪除多對多關(guān)系 - remove()修改多對多關(guān)系 - set()清空第三張表某個對象的綁定關(guān)系 - clear()多表查詢子查詢正向查詢反向查詢聯(lián)表查詢正向查詢反向查詢聚合查詢分組查詢F與Q查詢F查詢Q查詢django開啟事務(wù)前言

繼續(xù)上面一篇文章的內(nèi)容,本文介紹多表操作。使用django ORM可以創(chuàng)建多表關(guān)系,并且也支持多張表之間的操作,以創(chuàng)建表關(guān)系和查詢兩部分說明django ORM的多表操作。以作者、圖書、出版社和作者信息幾張表作為案例進行說明。

創(chuàng)建表關(guān)系

注意:在實際開發(fā)中不推薦使用外鍵建立表關(guān)系即不使用級聯(lián)更新和級聯(lián)刪除,而是推薦使用邏輯上的外鍵關(guān)系建立表關(guān)系。

上述的四張表中,圖書和出版社這兩表的關(guān)系屬于一對多的關(guān)系,外鍵建立在查詢頻率高的一方。作者和作者詳情表屬于一對一關(guān)系,外鍵建立在查詢頻率高的一方,作者和圖書屬于多對多關(guān)系,需要第三張表存儲關(guān)系,建議將外鍵建在查詢頻率高的一方。創(chuàng)建表時一定要執(zhí)行數(shù)據(jù)庫遷移命令哦~

創(chuàng)建表關(guān)系時可以先將表模型創(chuàng)建出來,然后再添加外鍵字段,另外在使用django ORM創(chuàng)建外鍵關(guān)系時,關(guān)聯(lián)的外鍵字段會自動在字段后加_id,表與表之間的關(guān)系默認以主鍵作為關(guān)聯(lián)字段。另外在創(chuàng)建表關(guān)系時,不建議使用實質(zhì)的外鍵進行關(guān)聯(lián),而是通過使用邏輯上的關(guān)系來指定表關(guān)系。

class Book(models.Model): name = models.CharField(max_length=60, verbose_name=’圖書名’) # 浮點數(shù)字段,max_digits表示數(shù)字共8位, decimal_place表示小數(shù)點占2位 price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name=’圖書價格’) inventory_num = models.IntegerField(verbose_name=’庫存數(shù)量’) sell_num = models.IntegerField(verbose_name=’賣出數(shù)量’) # 一對多關(guān)系外鍵字段創(chuàng)建使用 ForeigenKey(to=’表名’),默認關(guān)聯(lián)主鍵字段, db_constraint=Flase表示不建立實質(zhì)的外鍵關(guān)系,只是邏輯上的關(guān)系 publish = models.ForeignKey(to=’Publish’, on_delete=models.DO_NOTHING, db_constraint=False, verbose_name=’外鍵關(guān)聯(lián)出版社’) # 多對多關(guān)系,使用ManyToManyField(to=’表名’),author是一個虛擬的字段,主要是用來告訴ORM,書籍和作者是多對多的關(guān)系,而且ORM會自動創(chuàng)建多對多關(guān)系的第三張 author = models.ManyToManyField(to=’Author’, on_delete=models.DO_NOTHING, db_constraint=False, verbose_name=’外鍵關(guān)聯(lián)作者’)class Publish(models.Model): name = models.CharField(max_length=12, verbose_name=’出版社名稱’)class Author(models.Model): name = models.CharField(max_length=10, verbose_name=’作者名稱’) # 一對一關(guān)系使用OneToOneField(to=’表名’) author_detail = models.OneToOneField(to=’AuthorDetail’, on_delete=models.DO_NOTHING, db_constraint=False, verbose_name=’外間關(guān)聯(lián)作者詳情’)class AuthorDetail(models.Model): age = models.IntegerField(verbose_name=’年齡’) phone = models.CharField(max_length=11, verbose_name=’手機號’)

另外還需補充一點,多對多的表關(guān)系共有三種創(chuàng)建方式,分別是全自動創(chuàng)建、半自動創(chuàng)建和全手動創(chuàng)建:

# 全自動創(chuàng)建 - ManyToManyField,一般這種方式可以滿足需求’’’使用全自動創(chuàng)建多對多關(guān)系的優(yōu)點就是無需手動創(chuàng)建第三張表,非常方便,django ORM直接提供操作第三張表關(guān)系的方法缺點就是無法擴展第三張關(guān)系表’’’class Book(models.Model): name = models.CharField(max_length=32) authors = models.ManyToManyField(to=’Author’) class Author(models.Model): name = models.CharField(max_length=32) # 純手動創(chuàng)建 - ForeignKey手動創(chuàng)建第三張表’’’第三張表完全取決于手動的擴展,但是需要寫的代碼較多,而且無法使用ORM提供的簡單方法’’’class Book(models.Model): name = models.CharField(max_length=32) class Author(models.Model): name = models.CharField(max_length=32) class Book2Author(models.Model): book_id = models.ForeignKey(to=’Book’) author_id = models.ForeignKey(to=’Author’) # 半自動創(chuàng)建,通過ManyToManyField的參數(shù)控制第三張表class Book(models.Model): name = models.CharField(max_length=32) authors = models.ManyToManyField(to=’Author’, # 告訴ORM不需要自動幫忙創(chuàng)建第三張關(guān)系表through=’Book2Author’, # 告訴ORM第三張關(guān)系表對應(yīng)的表的外鍵字段through_fields=(’book’,’author’) # 通過哪兩個字段關(guān)聯(lián)表,當(dāng)前在哪張表,就先寫哪個表的關(guān)聯(lián)字段 )class Author(models.Model): name = models.CharField(max_length=32) class Book2Author(models.Model): book = models.ForeignKey(to=’Book’) author = models.ForeignKey(to=’Author’)多表數(shù)據(jù)操作 - 增刪改

首先介紹多表操作的增刪改操作,因為多表的查詢數(shù)據(jù)操作稍微麻煩一點,單獨另外開小灶。

一對多&一對一關(guān)系 - 增刪改

一對一和一對多的增刪改操作基本是一致的。

增加數(shù)據(jù)

增加數(shù)據(jù)有兩種方式,一種方式是通過實際字段來添加,另一種方式是通過虛擬字段對象賦值添加。

# 方式1:通過實際字段book_obj = models.Book.objects.create(name=’哈利波特’, price=10.2, publish_id=1)# 方式2,先獲取出版社對象,再將書籍和出版社通過出版社對象進行關(guān)聯(lián)publis_obj = models.Publish.objects.filter(pk=1).first()book_obj = models.Book.objects.create(name=’哈利波特’, price=10.2, publish=publis_obj)刪除數(shù)據(jù)

需要說明一點,在實際項目開發(fā)中刪除數(shù)據(jù)并不是真的刪除了,而是使用一個布爾類型的字段標識該數(shù)據(jù)是否刪除。刪除數(shù)據(jù)的時候如果不指定on_delete=models.DO_NOTHING默認是級聯(lián)更新級聯(lián)刪除的。

models.Publish.objects.filter(pk=1).delete()修改數(shù)據(jù)

修改數(shù)據(jù)同增加數(shù)據(jù)一樣有兩種方式。

# 方式1models.Book.objects.filter(pk=1).update(publish_id=1)# 方式2pub_obj = models.Publish.objects.filter(pk=2).first()models.Book.objects.filter(pk=1).update(publish=pub_obj)多對多關(guān)系 - 增刪改

首先需要明確的是,多對多的增刪改是在操作第三張關(guān)系表,但是第三張關(guān)系表是django自動創(chuàng)建的,如何通過代碼進入第三張表呢?多對多的外鍵關(guān)系被建在book表,多對多的外鍵字段是author字段,因此通過book_obj.author即可操作第三張表了。對于django自動創(chuàng)建的第三張表的多對多關(guān)系,django提供了額外的方法對數(shù)據(jù)進行操作。

增加多對多關(guān)系 - add()

add()方法給第三張關(guān)系表添加數(shù)據(jù),括號內(nèi)既可以傳數(shù)字也可以傳對象,并且都支持多個同時操作。

# 方式1,直接添加id值book_obj = models.Book.objects.filter(pk=1).first()book_obj.author.add(1) # 增加 1 1記錄,即id為1的書綁定id為1的作者book_obj.author.add(2, 3) # 增加兩條記錄,1 2 和 1 3# 方式2,通過對象添加關(guān)系book_obj = models.Book.objects.filter(pk=2).first()author_obj1 = models.Author.objects.filter(pk=1).first()author_obj2 = models.Author.objects.filter(pk=2).first()author_obj3 = models.Author.objects.filter(pk=3).first()book_obj.author.add(author_obj1) # 增加1條記錄book_obj.author.add(author_obj2, author_obj3) # 增加2條刪除多對多關(guān)系 - remove()

remove()方法用來為第三張表刪除數(shù)據(jù),同樣的,括號內(nèi)既可以傳數(shù)字也可以傳對象,并且支持多條數(shù)據(jù)同時操作。

# 方式1:直接刪除值book_obj = models.Book.objects.filter(pk=1).first()book_obj.author.remove(2) # 刪除book_id為1和author_id都為2的記錄book_obj.authors.remove(1, 3) # 刪除多條# 方式2:通過對象刪除author_obj1 = models.Author.objects.filter(pk=2).first()author_obj2 = models.Author.objects.filter(pk=3).first()book_obj.authors.remove(author_obj1, author_obj2)修改多對多關(guān)系 - set()

set()方法用來修改第三張表,該方法是一個覆蓋操作,用新的關(guān)系覆蓋之前的關(guān)系,該方法的參數(shù)必須是一個列表或者元組,指出數(shù)字或?qū)ο螅仓С侄鄺l數(shù)據(jù)同時操作。

# 方式1:直接通過值進行修改book_obj = models.Book.objects.filter(pk=1).first()book_obj.author.set([2]) # 將book_id為1對應(yīng)的author_id修改為2book_obj.authors.set([1, 2]) # 將書的作者設(shè)置為id=1 和id=2的作者# 方式2:通過對象進行修改author_obj2 = models.Author.objects.filter(pk=2).first()author_obj3 = models.Author.objects.filter(pk=3).first()book_obj.authors.set([author_obj2, author_obj3])清空第三張表某個對象的綁定關(guān)系 - clear()

clear()方法會清空第三張關(guān)系表中某個對象的綁定關(guān)系。

book_obj = models.Book.objects.filter(pk=1).first()book_obj.author.clear()多表查詢

在進行多表查詢操作前,需要了解一個概念,什么是正向查詢和反向查詢。

正向查詢:外鍵在哪個表中,查詢關(guān)聯(lián)的表就是正向查詢,比如通過書籍查詢出版社; 反向查詢:被關(guān)聯(lián)的表查外鍵字段所在的表就是反向查詢,比如通過出版社查詢書籍。子查詢

如果查詢比較復(fù)雜時可以采用子查詢的方式,子查詢就是分步驟查詢的意思,先查詢得到的結(jié)果作為后查詢的條件。

正向查詢

正向查詢按字段,如果有多個結(jié)果需要外鍵字段.all(),那么怎么判斷查詢的結(jié)果有多個呢?如果在不加.all()的情況下得到的結(jié)果是應(yīng)用名.模型名.None比如first.Author.None這種情況下說明ORM 語句沒有錯誤,只是查詢到的結(jié)果有多個,就需要加.all()。當(dāng)查詢結(jié)果只有一個時得到的是一個模型對象,如果為多個就是QuerySet對象。

# 一對多關(guān)系查詢:查詢書籍主鍵為1的書籍由哪個出版社出版book_obj = models.Book.objects.filter(pk=1).first()res = book_obj.publish # Publish object (1)print(res.name)# 多對多關(guān)系查詢:查詢數(shù)據(jù)主鍵為1的作者book_obj = models.Book.objects.filter(pk=1).first()res = book_obj.author # first.Author.None,說明結(jié)果有多個res_many = book_obj.author.all() # <QuerySet [<Author: Author object (1)>, <Author: Author object (2)>]> # 一對一關(guān)系查詢:查詢作者lili的年齡author_obj = models.Author.objects.filter(name=’lili’).first()res = author_obj.author_detailprint(res.phone)反向查詢

反向查詢?nèi)绻且粚σ坏脑捠潜砻懀绻且粚Χ嗷蛘叨鄬Χ鄷r反向查詢是表明小寫——set,另外如果有多個結(jié)果需要在表明小寫后再加_set.all(),判斷結(jié)果是否有多個的方法與正向查詢相同。當(dāng)查詢結(jié)果只有一個時得到的是一個模型對象,如果為多個就是QuerySet對象。

# 一對多關(guān)系查詢,查詢出版社是東方出版社出版的書publish_obj = models.Publish.objects.filter(name=’東方’).first()res = publish_obj.book_set.all() # <QuerySet [<Book: Book object (1)>, <Book: Book object (2)>]># 多對多關(guān)系查詢,查詢作者是lili寫過的書author_obj = models.Author.objects.filter(name=’lili’).first()res = author_obj.book_set # first.Book.None,說明有多個結(jié)果res_many = author_obj.book_set.all()print(res_many) # <QuerySet [<Book: Book object (1)>]># 一對一關(guān)系查詢,查詢手機號是119的作者author_detail_obj = models.AuthorDetail.objects.filter(phone=’119’).first()res = author_detail_obj.authorprint(res.name)聯(lián)表查詢

聯(lián)表查詢就是像MySQ里面SQL語句的聯(lián)表查詢一樣,只不過在django的ORM里面使用基于雙下劃線聯(lián)表查詢(跨表查詢)。聯(lián)表查詢的可以使用一行代碼查詢結(jié)果,聯(lián)表查詢也遵循正反向關(guān)系。

正向查詢

# 一對多關(guān)系查詢:查詢書籍主鍵為1的出版社名稱和書名# 首先獲取書籍對象,書籍是查詢publish的基表,因此獲取書名直接values(’names’)即可,而出版社的名字是通過外鍵字段跳到出版社的表中農(nóng),需要通過__找到需要的字段值res = models.Book.objects.filter(pk=1).values(’name’, ’publish__name’) # <QuerySet [{’name’: ’哈利波特’, ’publish__name’: ’東方’}]># 多對多關(guān)系查詢,查詢書籍主鍵為1的作者姓名res = models.Book.objects.filter(pk=1).values(’author__name’) # <QuerySet [{’author__name’: ’lili’}, {’author__name’: ’nana’}]># 一對一關(guān)系查詢,查詢lili的手機號和姓名res = models.Author.objects.filter(name=’lili’).values(’name’, ’author_detail__phone’).first()print(res.get(’name’), res.get(’author_detail__phone’))反向查詢

# 一對多關(guān)系查詢:查詢數(shù)據(jù)主鍵為1的出版社名稱和書的名字res = models.Publish.objects.filter(book__id=1).values(’name’, ’book__name’) # <QuerySet [{’name’: ’東方’, ’book__name’: ’哈利波特’}]># 多對多關(guān)系查詢:查詢書籍主鍵為1的作者姓名和書名res = models.Author.objects.filter(book__id=1).values(’name’, ’book__name’) # <QuerySet [{’name’: ’lili’, ’book__name’: ’哈利波特’}, {’name’: ’nana’, ’book__name’: ’哈利波特’}]># 一對一關(guān)系查詢:查詢作者id是1作者的姓名和手機號res = models.AuthorDetail.objects.filter(author__id=1).values(’author__name’, ’phone’) # <QuerySet [{’author__name’: ’lili’, ’phone’: ’119’}]># 綜合大查詢:查詢書籍主鍵是1的作者的手機號,首先獲取書籍對象,書籍關(guān)聯(lián)了作者表,作者表又關(guān)聯(lián)了作者詳情表 res = models.Book.objects.filter(pk=1).values(’author__author_detail__phone’) # <QuerySet [{’author__author_detail__phone’: ’119’}, {’author__author_detail__phone’: ’120’}]>聚合查詢

聚合查詢通常情況下是配合分組一起使用的,聚合查詢就是用一些統(tǒng)計工具,比如最大值,最小值,平均值等,聚合函數(shù)的導(dǎo)入方式from django.db.models import Max, Min, Sum, Count, Avg,如果在不分組的情況下使用聚合函數(shù)需要在aggregate()方法內(nèi)使用。

from django.db.models import Min,Max,Sum,Count,Avg# 統(tǒng)計書的平均價格res = models.Book.objects.aggregate(Avg(’price’))print(res)# 可以將這些聚合函數(shù)同時使用res = models.Book.objects.aggregate(Max(’price’),Sum(’price’),Count(’pk’))print(res)分組查詢

聚合函數(shù)通常和分組一起使用,分組查詢的方法是annotate,默認以models.分組依據(jù)作為分組依據(jù),即表的主鍵進行分組,如果annotate()方法前面出現(xiàn)了values()那么就會按照values中指定的值進行分組。分組查詢支持__跨表查詢。

from django.db.models import Sum, Max, Min, Avg, Count# 1.統(tǒng)計每本書的作者個數(shù)res = models.Book.objects.annotate(author_num=Count(’author’)).values(’name’, ’author_num’) # author_num是自己定義的字段用來存儲統(tǒng)計出來的每本書對應(yīng)的作者個數(shù),暫時存為表中的字段# 2.統(tǒng)計每個出版社賣的最便宜的書的價格res = models.Publish.objects.annotate(min_price=Min(’book__price’)).values(’name’, ’min_price’)# 3.統(tǒng)計不止一個作者的圖書# 先按照圖書分組,算出每本書的作者數(shù)量,再過濾出作者數(shù)量大于1的數(shù)據(jù)res = models.Book.objects.annotate(author_num=Count(’author’)).filter(author_num__gt=1).values(’name’, ’author_num’)# 4.查詢每個作者出版書的總價格res = models.Author.objects.annotate(sum_price=Sum(’book__price’)).values(’name’, ’sum_price’)F與Q查詢F查詢

F查詢可以獲得表中某個字段的數(shù)據(jù)值,尤其適合表中兩個字段之間的比較運算,在操作字符類型的數(shù)據(jù)時,F(xiàn)不能直接做字符串的拼接,需要借助Concat和Value。

from django.db.models import F# 1.查詢賣出數(shù)量大于庫存數(shù)量的書籍res = models.Book.objects.filter(sell_num__gt=F(’inventory_num’))# 將所有書籍的價格提升20元res = models.Book.objects.update(price=F(’price’)+20)

F查詢對于字符串的操作需要借助Concat和Value兩個方法:

# 將所有書的名稱后面加上爆款兩個字from django.db.models.functions import Concatfrom django.db.models import F, Valuemodels.Book.objects.update(name=Concat(F(’name’),Value(’爆款’)))Q查詢

使用filter()進行條件過濾時,采用的是邏輯與and的操作,如果想要將多個篩選條件更改為or或者not的關(guān)系則需要借助Q查詢。在Q查詢中|表示or的關(guān)系,~表示not的關(guān)系。

import django.db.models import Q# 查詢賣出數(shù)量大于100或者價格小于20的書籍res = models.Book.objects.filter(~Q(sell_num__gt=100) | Q(price__lt=20))

另外Q查詢還有另一個比較高級的用法,就是可以將查詢條件的左邊也變成字符串的形式。

# 先產(chǎn)生一個Q的實例q = Q()# 修改q的連接條件的關(guān)系q.connector = ’or’q.children.append((’sell_num__gt’,100))q.children.append((’price__lt’,200))res = models.Book.objects.filter(q)# filter的條件是Q實例化產(chǎn)生的對象,每個條件默認還是and關(guān)系,可以修改print(res)django開啟事務(wù)

MySQL為了保證數(shù)據(jù)的安全有一個事務(wù)的機制,django既然能夠連接MySQL那么django就可以支持MySQL的事務(wù)機制。下述代碼就是在django中開啟事務(wù):

from django.db import transactiontry: with transaction.atomic(): # 在with代碼快內(nèi)書寫的所有orm操作都屬于同一個事務(wù)...except Exception as e: print(r)...

到此這篇關(guān)于Django模型層實現(xiàn)多表關(guān)系創(chuàng)建和多表操作的文章就介紹到這了,更多相關(guān)Django 多表操作內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Django
相關(guān)文章:
主站蜘蛛池模板: 特级av| 国产精品久久久久婷婷二区次 | 成视频年人免费看黄网站 | 久久久久久av | 色一色视频| 91精品国产综合久久久久久 | 精品国产鲁一鲁一区二区三区 | 色吧综合网| 成人午夜免费视频 | 免费黄色小视频 | 国产九九精品 | 欧美伦理一区二区三区 | 午夜精品一区 | 久久91av| 国产精品久久国产精麻豆99网站 | 久久久久亚洲精品国产 | 午夜午夜精品一区二区三区文 | 91久久夜色精品国产网站 | 欧美男人天堂网 | 中文字幕一区二区三区在线视频 | 欧美日一区 | 精品成人免费一区二区在线播放 | 中文字幕不卡在线 | 久久99国产精品久久99大师 | 玖玖国产精品视频 | 伊人久久国产 | 爱爱网av | 久久久美女| 玖玖玖精品视频 | 日韩在线免费 | 午夜精品久久久久久久白皮肤 | 成人午夜视频在线观看 | 黄色天堂网 | 精品久久久久久久久久久久久久 | 精品96久久久久久中文字幕无 | 成人免费视频网站 | 男人的天堂久久 | 亚洲精品wwww| 国产精品视频入口 | 九九免费在线观看 | 精品国产天堂 | 国产不卡在线观看 | 欧美日韩一区二区三区在线电影 | 亚洲午夜精品片久久www慈禧 | 欧美一级精品片在线看 | 亚洲精品视 | 欧美黄视频在线观看 | 三级av网站| 欧美日韩一级电影 | 久久中文字幕视频 | 日本亚洲欧美 | 福利视频一区二区 | av在线日韩 | 国产女爽爽视频精品免费 | 久草在线免费福利资源 | 婷婷综合五月 | 青娱乐网 | 国产高清精品一区 | 天天摸天天操 | 亚洲一区二区三区免费视频 | 欧美激情综合五月色丁香小说 | 欧美一区二区三区在线观看视频 | 国产精品久久久久久久久 | 亚洲视频中文字幕 | 国产精品久久免费看 | 玖玖综合网| 91精产国品一二三区在线观看 | 午夜久久乐 | 九色一区 | 国产视频黄在线观看 | 日韩精品一区二区三区 | 日韩激情免费视频 | 国产一级中文字幕 | 久久久久国产一区二区三区四区 | 美女久久久久 | 久久久精品 | 久久91精品国产 | 一级免费毛片 | 国产成人免费视频网站高清观看视频 | 大桥未久亚洲精品久久久强制中出 | 亚洲精品一区国产精品 | 色在线看 | 国产精品免费一区二区三区四区 | 国产激情性色视频在线观看 | 欧美日韩成人在线视频 | 狠狠夜夜| av资源中文在线天堂 | 国产精品久久久麻豆 | av一级毛片| 国产不卡在线 | 黄色小视频在线观看 | 影音先锋中文字幕一区 | 日日操操| 午夜成人在线视频 | 色吊丝在线永久观看最新版本 | 亚洲人成人一区二区在线观看 | 国产一级淫片a级aaa | 欧美三区视频 | 天堂一区二区三区 | 亚洲欧洲一区二区 | 亚洲欧洲精品成人久久奇米网 | 精品日韩欧美一区二区在线播放 | 99精品一区二区三区 | 亚洲一区二区三 | 伊人av成人| 国产成人精品免高潮在线观看 | 午夜www | 91免费国产| 999视频在线 | 视频在线一区 | 欧美精品1区2区3区 精品国产欧美一区二区 | 中国一级特黄毛片大片 | 久久精品久久精品 | 国产福利在线观看视频 | 女人夜夜春 | 国产在线激情 | 中文日韩在线 | 久久九九这里只有精品 | 久热精品视频 | 久久不卡 | 成人伊人网 | 日韩中文久久 | 久久久久久99| 黄色大片免费网址 | 亚洲一区二区三区四区五区午夜 | 国产欧美日韩精品一区 | 日本三级国产 | 亚洲自拍偷拍精品 | 国产九九精品 | www.欧美.com| 免费国产一区二区 | 天天干人人 | 欧美成人精品在线视频 | 激情五月婷婷 | 中文字幕视频免费观看 | 荷兰欧美一级毛片 | 99精品一区二区 | 成人免费淫片aa视频免费 | hsck成人网 | 日日综合 | 日韩精品久 | 久久久久网站 | 国产精品日韩欧美一区二区三区 | 亚洲一区av在线 | 一本色道久久综合狠狠躁篇的优点 | 日韩一二三区 | 丁香婷婷在线 | 欧美一区二区三区免费视频 | 日韩二三区 | 山岸逢花在线观看无删减 | 日本久久精品视频 | 中文字幕高清av | 亚洲一区二区三区中文字幕 | www.久久久久 | 山岸逢花在线观看无删减 | 日韩在线一区二区三区 | 在线观看免费av的网址 | 国产一区二精品区在线 | 毛片国产| 日韩精品一区二区三区视频播放 | 欧美色综合 | 国产精品国产自产拍高清 | 亚洲 成人 av | 精品久久久久久久久久久下田 | 亚洲欧美第一页 | 狠狠色狠狠色合久久伊人 | 欧美一区二区三区在线看 | 99国产精品久久久久久久成人热 | 亚洲精品www | 一区二区精品视频 | 五月激情综合网 | 欧美精品免费在线观看 | 黄色片在线免费看 | 成人aaa| 久久成人一区 | 香蕉婷婷| 国变精品美女久久久久av爽 | 国内精品一区二区三区视频 | 国产欧美一区二区精品忘忧草 | 欧美激情国产日韩精品一区18 | 亚洲综合视频 | 中文字幕乱码亚洲精品一区 | 黄色资源网站 | 婷婷色av| 日韩福利视频 | 一区二区三区高清 | 欧美在线一区二区 | 六月色婷婷 | 99r在线 | 香蕉视频成人在线观看 | 亚洲一区二区三区免费在线观看 | 一区二区三区在线播放 | 福利视频二区 | 黄版视频在线观看 | 你懂的在线视频播放 | 国产精品久久久久久久久久 | 久久久国产精品视频 | 国产欧美综合视频 | 97久久精品 | 欧美精品综合在线 | 日韩午夜视频在线观看 | 91精品国产乱码久久久久久 | 成人欧美一区二区三区黑人孕妇 | 日日干日日操 | 亚洲综合欧美日韩 | 蜜月久综合久久综合国产 | 九九r热| 亚洲精品乱码久久久久久国产主播 | 在线看免费观看日本 | www视频在线观看 | 亚洲成人一区二区三区 | a久久| 国产精品毛片久久久久久 | 超碰在线91 | 蜜桃视频麻豆女神沈芯语免费观看 | 国产乱视频网站 | 看毛片网站 | 蜜桃视频在线观看www社区 | 亚洲一区二区三区观看 | 精品一区二区在线观看 | 日韩喷潮 | 欧美自拍网 | 国产日韩一区二区 | 欧美精品一区自拍a毛片在线视频 | 99久久99 | 精品久久久久久国产 | 久色视频在线 | 一区二区免费看 | 亚洲成人免费观看 | 中文字幕一区二区三区精彩视频 | 韩日一区二区 | 日韩精品av一区二区三区 | 国产高清免费 | 久久新 | 免费av在线网 | 国产精品久久久久久久岛一牛影视 | 久产久精品 | 一区二区久久 | 成年人免费看片 | 日韩免费av一区二区 | 欧美激情在线播放 | 在线免费黄色小视频 | 精品久久久久久久久久久久 | 欧美日本国产 | 国产视频色| 亚洲精品乱码久久久久久蜜桃 | 在线区 | 久久在线播放 | 懂色一区二区三区av片 | 精品久久国产 | 日韩电影专区 | 久久精品国产77777蜜臀 | 超碰操 | 日韩精品www | 日本一本在线 | 午夜影院在线观看版 | 午夜免费视频 | 91视频在线观看 | www夜夜操| 最新免费av网站 | 在线视频a| 国产无套一区二区三区久久 | 天天草草草 | 久久免费视频观看 | 久久99视频 | 欧美精品成人一区二区在线 | 成人无遮挡毛片免费看 | 成人影院在线 | 亚洲欧美日韩电影 | 在线观看中文字幕 | 午夜大片网 | 色综合天天综合网国产成人网 | 国产精品乱码一二三区的特点 | 日日鲁鲁| 中文字幕在线看 | 欧美成人影院在线 | 久久久久久久99精品免费观看 | 91av原创| 日本中文字幕在线观看 | 天天操导航 | 日本阿v视频高清在线中文 中文二区 | 最新中文字幕久久 | 日韩欧美h | 国产精品国产a级 | 99精品国产高清在线观看 | 亚洲乱码一区二区三区在线观看 | 国产成人精品一区二区视频免费 | 91成人免费看片 | 日韩视频一区在线观看 | 精品亚洲一区二区三区 | 国产精品污www一区二区三区 | 亚洲 欧美日韩 国产 中文 | 国产精品一区二区在线观看 | 999精品视频 | 国产精品免费观看 | 亚洲综合色视频在线观看 | 一区二区三区视频在线观看 | 亚州国产精品视频 | 亚洲欧美在线综合 | 日韩成人高清视频 | 九九福利| 欧美日韩国产一区二区三区不卡 | 波多野结衣先锋影音 | 日本久久二区 | 国产a视频 | 中文字幕免费观看 | 国产亚洲综合一区二区 | 91视在线国内在线播放酒店 | 欧美日韩成人一区 | 一级a毛片| 精品国产乱码久久久久久久软件 | 一级毛片免费播放 | 日韩一| 在线观看亚洲一区 | 操久久| 久久精品色欧美aⅴ一区二区 | 香蕉久久久久久 | 99国产视频 | 污片在线免费看 | 噜噜噜在线视频 | 亚洲午夜精品 | 久久人人爽人人爽 | 狠狠插天天干 | 国内精品国产成人国产三级粉色 | 免费在线观看一级毛片 | 欧美一区久久 | 中文字幕一区二区三区四区 | av一二| 人人草人人| 97久久精品人人做人人爽50路 | 国产精品久久久久久久久久三级 | 国产精品成人在线视频 | 亚洲成人精品一区二区三区 | 精品一区二区三区四区 | 国产精品人人做人人爽 | 99成人 | 国产精品一区二区在线 | 91精品一区二区三区久久久久久 | 亚洲国产高清高潮精品美女 | 正在播放欧美 | 91国偷自产一区二区三区亲奶 | 国产精品无码永久免费888 | 精品在线播放 | 免费一区二区三区 | 成年免费a级毛片 | 亚洲视频一区 | 亚洲福利一区 | 九九热这里只有精品8 | 亚洲第一福利视频 | 欧美11一13sex性hd | 久久99精品久久久久久噜噜 | 久久九九这里只有精品 | 欧美9999| 欧美视频网站 | 欧美一区二区三区aa大片漫 | 在线中文字幕视频 | 澳门久久 | 中文字幕亚洲欧美日韩在线不卡 | 久久精品在线 | 91精品综合久久久久久五月天 | 久久久久久久久久久亚洲 | 26uuu成人免费毛片 | 日韩精品久久 | 日韩免费在线视频 | 日韩欧美视频一区 | 欧美一区二区三区精品 | 色综合天天天天做夜夜夜夜做 | 50人群体交乱视频 | 天天夜碰日日摸日日澡 | 麻豆网址 | 精品视频在线观看一区二区三区 | 另类亚洲专区 | 91av官网 | 国产一区二区在线电影 | 午夜在线电影 | 国产日本欧美在线 | 国产一区| 久久伦理电影 | 久久国产精品免费一区二区三区 | 亚洲综合在线视频 | 在线观看三区 | 黄色地址 | 99热在线国产| 在线国产视频 | 国产精品亚洲一区二区三区在线 | 色婷婷综合久色 | 中文字幕高清在线 | 久久综合久久综合久久综合 | 欧美性一区 | 男女免费在线观看视频 | 品久久久久久久久久96高清 | 欧洲亚洲一区 | 国产精品永久久久久久久久久 | 成人在线片 | 日韩精品在线观看一区 | 久久6 | 欧美亚洲激情 | 一区二区三区免费视频网站 | 国产精品久久久久久久久久东京 | 后进极品白嫩翘臀在线视频 | 欧美视频在线免费 | 久久久久一区二区三区 | 亚洲免费视频大全 | 国产精品一区一区三区 | 亚洲精品亚洲人成人网 | 毛片网 | 在线观看国产一区 | 国变精品美女久久久久av爽 | av在线干| av免费网站在线观看 | 欧美一区国产一区 | 国产一区二区三区不卡在线观看 | 欧美成人a∨高清免费观看 在线视频成人 | 一区二区三区国产亚洲网站 | 黄网在线 | 成人免费看电影 | 真人女人一级毛片免费播放 | 午夜精品久久久久久 | 免费三片在线观看网站 | 一区二区免费 | 午夜精品久久久久久久99黑人 | 久久亚洲一区 | 无码日韩精品一区二区免费 | 激情999 | 99视频免费看 | 久久久成人网 | 国产在线视频网站 | 国产成人免费视频网站视频社区 | 日韩高清一区二区 | 日韩一区二区在线观看视频 | 色一情 | 91短视频版在线观看免费大全 | 免费一区| 中文一二区 | hitomi一区二区三区精品 | 亚洲欧美中文日韩在线v日本 | 欧美精品一区二区三区四区在线 | 男女免费在线观看视频 | 国产一区av在线 | 91亚洲精品乱码久久久久久蜜桃 | 99精品全国免费观看视频软件 | 亚洲a在线观看 | 99精品热视频 | 经典法国性xxxx精品 | 国产在线拍揄自揄拍视频 | 黄色片一区 | 欧美亚洲国产一区二区三区 | 久久久久久久久久久久久av | 成人深夜小视频 | 国产精品久久国产精麻豆99网站 | 欧美一区二区三区在线视频 | 国产成人综合av | 中文字幕在线资源 | 精品久久久久久久久久久下田 | av三级在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 久久久久av | 亚洲成人黄色 | 老师的朋友2 | 精品国产一区二区三区性色av | 99精品一区二区三区 | 亚洲日本二区 | 国产成人午夜高潮毛片 | 国产九九九 | 天天射欧美 | 伊人免费视频二 | 狠狠爱网站 | 亚洲欧美综合 | 亚洲网站色 | 欧美国产在线观看 | 免费操片| 在线看国产| 国内精品在线视频 | 亚洲午夜在线 | 日韩成人精品视频在线观看 | 国产精品99久久免费观看 | 欧美日韩一区二区三区在线观看 | 国产日本欧美在线 | 一区二区欧美视频 | 亚洲第一成年免费网站 | 久久亚洲精品中文字幕 | 欧美日韩中文字幕在线 | 日韩一区二区观看 | 国产成人精品一区二区在线 | 久久一本 | 日韩在线欧美 | 亚洲一区二区三区在线 | 亚洲毛片网站 | 亚洲情综合五月天 | 91麻豆视频 | 国产精品视频久久 | 不卡久久 | 成人在线免费视频 | 国产真实精品久久二三区 | 99视频在线免费观看 | 日本a在线 | www..99re | 免费观看的黄色 | www麻豆 | 国产美女精品 | 精品久久久久久久 | 亚洲成人av电影 | 欧美在线激情 | 淫片一级国产 | 久久久99精品免费观看 | 国产永久免费 | 依人99| 91在线看视频 | 91久久久久久久久 | 日韩精品在线免费观看 | 免费黄色在线观看 | 天天碰天天操 | 精品国产18久久久久久二百 | 爱干在线| 国产综合精品一区二区三区 | 91精品国产日韩91久久久久久 | 伊人网av| 97精品国产 | 久久精品国产99国产精品 | 国产精品一二三区 | 9l蝌蚪porny中文自拍 | 午夜精品久久久 | 伊人伊人 | 国产成人精品一区二区三区视频 | 日韩精品视频在线 | 国产激情视频在线观看 | 午夜久久乐 | 日韩中文字幕视频 | 午夜精品福利在线观看 | 国产精品日本一区二区不卡视频 | 亚州精品天堂中文字幕 | 中文字幕一区二区三区乱码图片 | 99re6热在线精品视频播放 | www久久国产 | 成年无码av片在线 | www.福利视频 | 亚洲另类视频 | 亚洲成人免费在线 | 九九国产精品视频 | 国产高清视频在线 | 亚洲国产成人av好男人在线观看 | 波多野结衣电影一区 | www.一区二区 | 另类国产ts人妖高潮系列视频 | 免费日韩成人 | 欧美激情一区二区三级高清视频 | 亚洲精品久久久久一区二区三区 | 人人人艹 | 欧美精品色 | 97夜夜操 | 国产精品成人国产乱一区 | 7777奇米影视 | 国产精品中文字幕在线 | 国户精品久久久久久久久久久不卡 | 久久久蜜桃 | 国产一级视频在线播放 | 国产区精品在线 | 91精品国产91久久久久久 | 国产九九精品视频 | 国产精品自拍视频 | 成人av综合 | 国产不卡免费视频 | 精国产品一区二区三区四季综 | 中文字幕日韩久久 | 国产91久久精品 | 欧美日韩中文字幕 | 国产亚洲精品久久久优势 | 国产一区高清 | 九九久久精品 | 欧美一区二区三区 | 日韩在线中文字幕 | av片在线免费观看 | 日本成人中文字幕 | 亚洲色图p| 国产精品成人在线观看 | 欧美一区二区三区视频 | 百性阁综合另类 | 亚洲国产精品一区 | av在线影院 | 欧美成人免费在线视频 | 国产v日产∨综合v精品视频 | 亚洲精品久久久 | 国产成人精品综合 | 欧美天天 | 久久精品欧美一区二区三区不卡 | 国产精品亚洲天堂 | 中文久久| 国产一区二区三区在线 | 欧美美女爱爱视频 | 国产成人精品亚洲日本在线观看 | 精品在线不卡 | t66y最新地址一地址二69 | 中国一级特黄毛片大片 | 97久久精品 | 久久亚洲黄色 | 一区二区三区无码高清视频 | 伊人精品在线 | 免费h视频| 中文字幕 欧美 日韩 | 成人精品鲁一区一区二区 | 日本黄色片免费看 | 亚洲二区视频 | 亚洲成av人乱码色午夜 | 免费福利视频一区二区三区 | 国产在线一区二区三区 | 91av官网 | 国产视频一区二区 | 在线成人www免费观看视频 | 中国一级毛片免费 | 成人精品一区 | 亚洲综合色自拍一区 | 在线免费视频成人 | 日韩一区二区在线观看视频 | 一级一片免费视频 | 麻豆色呦呦 |