0

我得到了两个通过 Django 中的 ForeignKey 相关的模型。(我正在使用 Django 1.3)

Class Person(models.Model):
    # some fields here like name, gender, etc...

Class Course(models.Model):
    # some fields here
    contact = models.ForeignKey(Person, blank=True, null=True)

在课程的管理员更改列表视图中,我希望能够按 ForeignKey 联系人过滤课程。在 admin.py 我得到:

class CourseAdmin(admin.ModelAdmin):
   list_filter = ('contact',)

这工作得很好。我可以按所有可用的联系人过滤课程。现在我想只显示那些实际上附加了课程的联系人。我在这里阅读了 SO 以通过创建自定义 FilterSpec 来实现 CustomFilters。我不知道这是否是正确的方向,因为我只需要进一步过滤用于显示联系人选择的查询集。

在外壳中,我通过以下方式获得所需的查询集:

contacts=Person.objects.filter(course__in=Course.objects.all()).distinct()

我已经读到您可以在 1.4 中轻松实现这一点,但我仍然受制于 1.3 有人可以指出我正确的方向吗?谢谢!

4

1 回答 1

1

Django 1.3 也支持过滤器,但过滤器类在 1.4 中被移动/重命名。使用 FilterSpec 是实现目标的方法。您不仅需要过滤查询集,还需要正确处理来自 QueryString 的应用过滤器。所以继续使用过滤器。这是一个非常好的片段,它处理 FK 过滤,并且有不错的选项:http ://djangosnippets.org/snippets/2260/

于 2012-07-03T11:27:53.243 回答