繁体   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