簡體   English   中英

具有多個約束的相關字段上的Django查詢集

[英]Django queryset on related field with multiple constraints

假設我有以下型號:

class User(models.Model):
    # ... some fields

class Tag(models.Model):
    # ... some fields

class UserTag(models.Model):
    user = models.ForeignKey(User, related_name='tags')
    tag = models.ForeignKey(Tag, related_name='users')
    date_removed = models.DateTimeField(null=True, blank=True)

現在我想說我希望得到所有尚未刪除的給定標記的用戶(即date_removed = None)。 如果我不必擔心date_removed約束,我可以這樣做:

User.objects.filter(tags__tag=given_tag)

但我希望獲得具有該給定標記的所有用戶並且標記上沒有date_removed。 Django有一個簡單的方法可以在單個查詢集中獲取它嗎? 並且假設我有數百萬用戶,因此獲取任何類型的用戶ID列表並將其保留在內存中是不切實際的。

您的filter()調用可以包含多個約束:

User.objects.filter(tags__tag=given_tag, tags__date_removed=None)

當它們匹配時,它們將匹配相同的 Tag ,而不是兩個可能不同的Tag

請參閱跨越多值關系的文檔 ; 特別是, filter(a, b)filter(a).filter(b)之間的差異。 filter(a, b) filter(a).filter(b)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM