【发布时间】:2020-07-22 21:10:24
【问题描述】:
我在Django有这样一个模型:
class VariantTag():
saved_variants = models.ManyToManyField('SavedVariant')
variant_tag_type = models.ForeignKey('VariantTagType', on_delete=models.CASCADE)
然后,我正在尝试获取saved_variants 长度为2 的字段的VariantTag 模型,其中至少包含variant_ids pk 列表中的一个ID:
het_tags = (VariantTag.objects.annotate(variant_len=Count('saved_variants'))) \
.filter(saved_variants__in=variant_ids, variant_len=2)
logger.info(het_tags.all())
het_variant_ids = het_tags.values_list('saved_variants', flat=True)
logger.info('******* het_variant_ids: {}'.format(het_variant_ids))
Logger 我得到的输出如下:
<QuerySet []>
******* het_variant_ids: <QuerySet [150, 149]>
150 和 149 是我正在寻找的正确 ID。但是,我需要获取完整的 QuerySet 对象,如何获取它们?为什么它不起作用?
更新
两个查询条件各自独立工作,但一起应用它们会给出一个空结果。根据我在模型中不应该发生的数据。
【问题讨论】: