国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

django-orm F對象的使用 按照兩個字段的和,乘積排序實例

瀏覽:114日期:2024-10-05 13:16:31

class F

F()是代表模型字段的值,也就是說對于一些特殊的字段的操作,我們不需要數據先取到內存中,然后操作,在存儲到db中了。

以下為幾個使用的經典場景:

1. 統計點擊量,點贊(每次加1)

from django.db.models import FReporters.objects.filter(id=case_id).update(thumb_num=F(’thumb_num’) + 1)

2.一個合同字段,結束日期和終止日期的比較很容易實現 終止日期小于結束日期

from django.db.models import F

contract_list = Contracts.objects.filter(contract_stop_time__lt=F(’contract_end_time’))

3.如果說按照兩個字段的和,乘積,差進行排序,用F類是最好的解決方法,這樣不必要再添加一個字段了

# 按照總價逆序取前十個goods_list = Goods.objects.all( ).order_by( F(’num’) * F(’unit_price’) ).reversed( )[ :10] # 按照點贊與評論數和進行排序hot_list = Article.objects.all( ).order_by( F(’thumb_num’) + F(’comment_num’) ).reversed( )

總的來說,F對象支持對數據的算術運算,還有時間比較操作,真的是query利器。

補充知識:Django查詢數據庫時各種種類的排序

按照entry_date從小到大查詢數據,可以寫成:

Content.objects.order_by(’entry_date’)

從大到小排序:

Content.objects.order_by(’-entry_date’)

下面介紹其他種類的排序

隨機排序:

Content.objects.order_by(’?’)

但是order_by(?)這種方式也許expensive并且slow,這取決于后端數據庫。

按照關系表的字段排序

class Category(Base): code = models.CharField(primary_key=True,max_length=100) title = models.CharField(max_length = 255)class Content(Base): title = models.CharField(max_length=255) description = models.TextField() category = models.ForeignKey(Category, on_delete=models.CASCADE)

# 按照Category的字段code,對Content進行排序,只需要外鍵后加雙下劃線Content.objects.order_by(’category__title’)# 如果只是按照外鍵來排序,會默認按照關聯的表的主鍵排序Content.objects.order_by(’category’)# 上面等價于Content.objects.order_by(’category__code’)# 雙下劃線返回的是join后的結果集,而單下劃線返回的是單個表的集合Content.objects.order_by(’category_title’)

Note: 無論是單下劃線還是雙下劃線,我們都可用{{ content.category.title }}在前端獲取到關聯表的數據。

以上這篇django-orm F對象的使用 按照兩個字段的和,乘積排序實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
主站蜘蛛池模板: 崇义县| 洞头县| 通江县| 中方县| 高要市| 遂宁市| 分宜县| 霍州市| 津南区| 容城县| 阆中市| 商水县| 胶南市| 梓潼县| 深水埗区| 新津县| 和林格尔县| 吴桥县| 沅陵县| 木里| 随州市| 文登市| 高州市| 峨眉山市| 水富县| 康乐县| 临城县| 达孜县| 化州市| 青岛市| 台南县| 确山县| 定日县| 平湖市| 小金县| 丹寨县| 盐津县| 南宫市| 九龙城区| 延寿县| 陈巴尔虎旗|