Python 多个关系Django中的子集查询
我有两个表格:文章和出版物。一篇文章可以有多个出版物 给定一个发布对象列表,我想编写一个查询,只提供列表中存在发布对象的文章。(仅子集) 例如Python 多个关系Django中的子集查询,python,django,many-to-many,django-orm,Python,Django,Many To Many,Django Orm,我有两个表格:文章和出版物。一篇文章可以有多个出版物 给定一个发布对象列表,我想编写一个查询,只提供列表中存在发布对象的文章。(仅子集) 例如 ABC文章有出版物P1、P2 BCD有P2,P3 DEF有P3、P4 给定的出版物为[P1、P2、P3] 所以查询输出应该是-ABC,BCD DEF将被排除在外,因为其具有列表中不存在的P4 在M2M关系中,使用筛选和排除不能正常工作。 所以我用for循环来解决这个问题,它看起来效率不高,我想要更具Pythonic和ORM效率的解决方案 models
- ABC文章有出版物P1、P2
- BCD有P2,P3
- DEF有P3、P4
from django.db import models
class Publication(models.Model):
title = models.CharField(max_length=30)
class Meta:
ordering = ['title']
def __str__(self):
return self.title
class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication)
class Meta:
ordering = ['headline']
def __str__(self):
return self.headline
Views.py
article = Article.objects.get(pk=pk)
publications_in_article = article.publications.all()
for publication in publications_in_article :
if publication not in cleaned_data.get('publications'):
exclude_publications.append({'id': publication.id, 'name': publication.title})
break
return exclude_publications