如何在Django Admin中过滤外键字段的查询集

时间:2018-09-12 21:42:02

标签: django django-models django-forms django-admin

我有一个这样的场景,我有3个模型:类别,子类别和帖子。

-类别是子类别的一对多,子类别是帖子的一对多。

我的 models.py 看起来像这样(缩小版)。

class Category(models.Model):
    cat=models.CharField(max_length=10)

class SubCategory(models.Model):
    subcat=models.CharField(max_length=10)

class Posts(models.Model):
    cat=models.ForeignKey(Category) 
    subcat=models.ForeignKey(SubCategory) 
    title=models.CharField(max_length=10)

我想发布一个来自管理员的帖子,其中我只希望基于从类别中选择的下拉列表来查询子类别。就像,如果我在admin的“添加帖子”部分的下拉列表中选择Django,它应该只给我链接到Django的子类别(或从下拉列表中选择的任何内容)。

我尝试了很多搜索,而我能找到的最好的是 render_change_form 。但是render_change_form的问题是,它需要过滤的条件,我没有该条件,因为我希望从表单本身(基于下拉选择)中选择Category。

我不确定在django中是否有可能。

1 个答案:

答案 0 :(得分:1)

您必须编写自己的自定义JavaScript。因此,无论何时选择类别,都会根据一些ajax命中填充子类别下拉列表。

您也可以看看django autocomplete light.

我在项目中使用了很多次。您可以使用正向参数(将类别发送到子类别)来实现您的要求。

希望这会有所帮助。