0

我在 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()

什么是获取电子邮件字段中列出的所有用户的有效方法,即无需遍历 email_set。fromemail_set

4

1 回答 1

1

这是简单有效的方法:

users = ( User
          .objects
          .filter( email__attachment__name = 'Picture1.jpg' )
          .distinct()
        )

请记住为您的数据库表创建所需的索引。

于 2013-11-01T14:48:08.697 回答