当前位置: 首页 > 面试题库 >

我可以在django admin中使list_filter只显示引用的ForeignKey吗?

柴星津
2023-03-14
问题内容

我有一个django应用程序,它具有两个这样的模型:

class MyModel(models.Model):
    name = models.CharField()
    country = models.ForeignKey('Country')

class Country(models.Model):
    code2 = models.CharField(max_length=2, primary_key=True)
    name = models.CharField()

admin类MyModel如下所示:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'country',)
    list_filter = ('country',)
admin.site.register(models.MyModel, MyModelAdmin)

Country表包含约250个国家。在某些MyModel情况下,实际上仅引用了少数几个国家。

问题是django管理员中的列表过滤器在过滤器面板中列出了所有国家。列出所有国家/地区(而不仅仅是实例引用的国家/地区)在这种情况下非常不利于使用列表过滤器的目的。

是否有一些仅MyModel在列表过滤器中显示作为参考的国家?(我使用Django 1.3。)


问题答案:

从Django 1.8开始,有一个内置的RelatedOnlyFieldListFilter,你可以用来显示相关的国家。

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'country',)
    list_filter = (
        ('country', admin.RelatedOnlyFieldListFilter),
    )

对于Django 1.4-1.7,list_filter允许你使用的子类SimpleListFilter。应该可以创建一个简单的列表过滤器,列出所需的值。

如果无法从Django 1.3升级,则需要使用内部未FilterSpec公开的api。Django Admin中的堆栈溢出问题自定义过滤器应为你指明正确的方向。



 类似资料:
  • 问题内容: 我有一个模型,该模型具有与的外键关系,该模型具有许多字段,但是我最关心的是(标准)。 话虽如此,在我的模型中,我想使用显示: 我已经尝试了所有显而易见的方法来执行此操作,但是似乎没有任何效果。 有什么建议么? 问题答案: 作为另一种选择,你可以进行如下查找:

  • 我有一个带有索引的ISODate()类型字段的数据库(我也用字符串字段尝试了这个实验——结果相同)。我使用的是MongoDB(4. x)的开源版本,当我进行查询/排序以查找最大_finish_time时,除非我指定提示,否则不会使用索引。 我的问题是: 这解释为: 扫描整个收藏。当我为可用索引指定提示时,如: 我得到了查询计划: 它使用索引。我不想在查询中添加hint(),我对它为什么拒绝使用索引

  • 我已经实现了一个基于lucene的软件来索引超过1000万的人名,这些人名可以用不同的方式书写,比如“Luíz”和“Luis”。索引是使用各个标记的语音值创建的(创建了一个自定义分析器)。 目前,我正在使用QueryParser查询一个给定的名称,结果很好。但是,在《Lucene in Action》一书中提到,SpanarQuery可以使用标记的接近性来改进我的查询。我对名称的非拼音索引使用了S

  • 在Eclipse 4.2中,是否有方法显示Ant视图中包含的Ant构建文件的路径或项目名称信息? 在我的工作区中,我当前签出了两个版本的项目,一个来自我们的myproject/trunk,另一个来自myproject/Branchs/feature 从每个分支中,我已经将适当的build.xml从项目中拖到蚂蚁视图中。但是,由于主干和功能分支都有相同的项目名称和相同的目标,因此在蚂蚁视图中无法区分

  • Twitter的引导使用Glyphicons的图标。默认情况下,它们是“”: 是否可以使用一些CSS技巧来更改图标的颜色?我希望其他css3的亮点能够避免为每种颜色设置图标图像。 我知道你可以改变封闭的背景颜色(

  • 我试图只获得新版本的行已更改,而不是git diff显示的所有其他信息。 用于: 它显示: 我想看到的只是: 可能吗?