亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

    <nobr id="xrujl"></nobr>
  1. <ul id="xrujl"></ul>
    
        
        

    使用 django orm 寫 exists 條件過濾實(shí)例

     更新時(shí)間:2020年05月20日 17:11:46   作者:xufwind  
    這篇文章主要介紹了使用 django orm 寫 exists 條件過濾實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

    要用django的orm表達(dá)sql的exists子查詢,是個(gè)比較麻煩的事情,需要做兩部來完成

    from django.db.models import Exists, OuterRef
     
    # 1. 定義子查詢條件
    relative_comments = Comment.objects.filter(
     post=OuterRef('pk'), # 注意外鍵關(guān)聯(lián)方式:post為Comment表的字段,pk表示關(guān)聯(lián)另一表主鍵
    )
     
    # 2. 使用annotate和filter共同定義子查詢
    Post.objects.annotate( # 使用exists定義一個(gè)額外字段
     recent_comment=Exists(recent_comments),
    ).filter(recent_comment=True) # 在條件中通過檢查額外字段實(shí)現(xiàn)exists子查詢過濾

    這種方式比較麻煩,有其它簡便方式的歡迎分享

    官網(wǎng)參考: https://docs.djangoproject.com/en/2.1/ref/models/expressions/#filtering-on-a-subquery-expression

    補(bǔ)充知識:關(guān)于使用django orm 時(shí)的坑

    跨app 時(shí)外鍵報(bào)錯

    class Host(models.Model):
    nid = models.AutoField(primary_key=True)
    hostname = models.CharField(max_length=32, db_index=True)
    ip = models.GenericIPAddressField(protocol=“ipv4”, db_index=True)
    port = models.IntegerField()
    # b = models.ForeignKey(to=“Business”, to_field=‘id')
    
    class HostToApp(models.Model):
    hobj = models.ForeignKey(to=‘Host', to_field=‘nid')
    aobj = models.ForeignKey(to=‘Application', to_field=‘id')
    
    class Application(models.Model):
    name = models.CharField(max_length=32)
    

    以上 model 都在一個(gè)models 文件下時(shí)不會報(bào)錯。 但是一旦出現(xiàn)跨app 時(shí)會報(bào)以下錯誤:

    users.HostToApp.aobj: (fields.E300) Field defines a relation with model ‘Application', which is either not installed, or is abstract.
    users.HostToApp.aobj: (fields.E307) The field users.HostToApp.aobj was declared with a lazy reference to ‘users.application', but app ‘users' doesn't provide model ‘a(chǎn)pplication'.

    解決方案:

    1、

    from xxxx.models import Application

    2、

    class HostToApp(models.Model):
    hobj = models.ForeignKey(to=‘Host', to_field=‘nid')
    aobj = models.ForeignKey(to=‘xxxx.Application', to_field=‘id')

    第二步很重要

    以上這篇使用 django orm 寫 exists 條件過濾實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

    相關(guān)文章

    最新評論