Django - 从ForeignKey中选择不同的值

时间:2010-01-05 09:54:48

标签: django django-models

我可能有一种显而易见的方法可以解决这个问题。

我有这样的模特:

class Speaker(models.Model):
    name = models.CharField(max_length=50)

class Talk(models.Model):
    title = models.CharField(max_length=50)
    speaker = models.ForeignKey(Speaker)

如何优雅地列出所有发言的发言人名单?

目前我正在做一些可怕的事情,获取所有会谈的列表并循环遍历它们,因为我看不到使用Django的ORM这么简单的方法。

1 个答案:

答案 0 :(得分:3)

Speaker.objects.exclude(talk=None)

Speaker.objects.filter(talk__isnull=False)

修改

查看底层SQL(通过在表达式的末尾添加.query.as_sql()),似乎后一种形式显着提高效率。前者完成了一个完全不必要的子查询。

我怀疑这是一个错误,因为第一种形式是在版本1.0之前发生的大量查询集重构中引入的,并且应该是首选形式。