如何在Django Admin中过滤foreignkey字段的查询集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Django Admin中过滤foreignkey字段的查询集相关的知识,希望对你有一定的参考价值。
我有这样的场景,我有3个模型:Category,Subcategory和Posts。
- 类别是一对多的子类别和子类别是一对多的帖子。
我的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的帖子,其中我只想要基于从类别中选择的下拉列表的子类别的查询集。比如,如果我从admin中的“添加帖子”部分的下拉列表中选择Django,它应该只给我链接到Django的子类别(或者我从下拉列表中选择的任何内容)。
我已经尝试了很多搜索,我能找到的最好的是render_change_form。但是render_change_form的问题是,它需要过滤的条件,我没有,因为我想从表单本身的类别(基于下拉选择)。
我不确定django是否有可能。
答案
您必须编写自己的自定义javascript。因此,每当选择类别时,将根据某些ajax命中填充子类别下拉列表。
你也可以看看django autocomplete light.
我在我的项目中多次使用过它。您可以使用forward参数(将类别发送到子类别)来实现您的要求。
希望这可以帮助。
以上是关于如何在Django Admin中过滤foreignkey字段的查询集的主要内容,如果未能解决你的问题,请参考以下文章