从外键获取Django模型的数据

时间:2013-11-01 14:41:22

标签: django django-models django-views

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

高效方法是获取fromemail_set电子邮件字段中列出的所有用户的方式,即不通过email_set循环播放。

1 个答案:

答案 0 :(得分:1)

这是简单且高效方式:

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

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