添加/更改表单中的ForeignKey字段 - Django admin

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加/更改表单中的ForeignKey字段 - Django admin相关的知识,希望对你有一定的参考价值。

假设我将这些模型作为一个简单的例子:

class Event(models.Model):
    name = models.CharField(max_length=50, default='')
    app = models.ForeignKey(App)

class App(models.Model):
    name = models.CharField(max_length=50, default='')
    app_config = models.ForeignKey(AppConfig)

class AppConfig(models.Model):
    type = models.CharField(max_length=50, default='')
    is_valid = models.BooleanField(default=True)

我想创建一个管理页面,其中包含Event的添加/更改表单,这将允许我选择一个App并创建包含其所有字段的AppConfig

基本上,要有一个下拉列表选择一个App,在它下面填写AppConfig字段。或者甚至只是一个“+”符号或链接将弹出一个表单来创建一个AppConfig

我看到了很多关于如何将它添加到list_display(例如this)的例子,但是无法用fieldsfieldsets做同样的事情,以便在添加/更改形式中使用它。

任何建议将不胜感激。谢谢!

注意:我知道如果我在AppConfig中将Event作为外键,这可能很容易解决,但这并没有多大意义。

编辑:我的Django和Python版本: Python:2.7.x Django:1.7.4

Edit2:我发现这个很好的开源代码django_reverse_admin可能会有所帮助,但首先,这个特定的软件包只支持Django 2.0+。我试图使用原来的代码,似乎支持以前的Django版本,但没有设法将其应用于我的具体情况。 如果有人有想法或者可以告诉我如何在我的特定情况下使用它,这将是伟大的。谢谢!

答案

通过此软件包,您可以通过向模型添加自定义外键或多个字段来快速筛选或分组“链式”模型。这将使用AJAX查询仅加载适用的链接对象。

https://github.com/digi604/django-smart-selects

我想,解决方案已经在这里讨论了How to filter a dropdownlist in Django's admin when a selection is made on another dropdownlist

以上是关于添加/更改表单中的ForeignKey字段 - Django admin的主要内容,如果未能解决你的问题,请参考以下文章

在管理站点中更改 ForeignKey 的默认值

允许 Django 模型 ForeignKey 字段的表单上的 TextInput

Django ForeignKey 表单字段小部件

django 忽略表单集中更改的字段

如何在 Django Admin 中更改 ForeignKey 显示文本?

将类添加到 django 表单小部件字段