我在Django中有一个模型看起来像这样(我简化了表格并跳过了不相关的字段。我无法更改表格/关系):
Class Attachment(models.Model):
name = models.CharField()
Class Email(models.Model):
subject = models.CharField()
from = models.ForeignKey(User)
attach = models.ForeignKey(Attachment)
Class User(models.Model):
name = models.CharField()
在我看来,我想查找已发送此附件的所有Users
。所以,首先我获取包含此附件的所有电子邮件
my_attachment = Attachment.objects.get(name='Picture1.jpg')
email_set = my_attachment.email_set.all()
高效方法是获取from
中email_set
电子邮件字段中列出的所有用户的方式,即不通过email_set循环播放。
答案 0 :(得分:1)
这是简单且高效方式:
users = ( User
.objects
.filter( email__attachment__name = 'Picture1.jpg' )
.distinct()
)
请记住为数据库表创建所需的索引。