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

时间:2018-08-28 21:46:04

标签: python django django-forms 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版本,但没有设法将其应用于我的特定情况。
如果有人有想法或可以告诉我如何在我的特定情况下使用它,那将是很棒的。谢谢!

1 个答案:

答案 0 :(得分:3)

此软件包允许您通过向模型添加自定义外键或多对多字段来快速过滤或分组“链接”模型。这将使用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