Skip to main content
 首页 » 编程设计

python之在 Django 中查询 ManyToMany 给我重复的结果

2024年08月20日30JeffreyZhao

我有两个模型

class Tag(models.Model): 
   key = models.CharField(max_length=200) 
 
class Post(models.Model): 
   name = models.CharField(max_length=200) 
   tags = models.ManyToManyField(Tag) 

我正在尝试过滤掉带有标签列表的帖子。让我们说标签 heat 和 warm。我将在我的 api 函数中获得标签列表 (['heat', 'warm'])。我想过滤所有具有标签的 Post 数据,这些标签的键在列表中。我尝试了很多类型,但没有得到正确的输出。有没有办法在单个查询上执行此操作?

请您参考如下方法:

此标签键等于 heat 或 warm 的所有帖子

Post.objects.filter(tags__key_in=['heat', 'warm'])  

添加不同的以避免重复:

Post.objects.filter(tags__key_in=['heat', 'warm']).distinct()