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

标签 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 ),但无法对 fields 执行相同的操作>fieldsets 以便在添加/更改表单中也有它。

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

注意:我知道如果我在 Event 中也有 AppConfig 作为外键,这可能很容易解决,但事实并非如此真的很有道理。

编辑: 我的 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

关于python - 添加/更改表单中的 ForeignKey 字段 - Django admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52066617/

相关文章:

Django - 如何在保存前检索表单字段的值?

python - 用于 kivy 的 Windows 中的文件浏览器错误

Django用count过滤多对多关系

python importlib,如何使动态加载文件的缓存无效

Django,如何以自定义形式使用管理自动填充字段

django - 表单集中每个表单中字段的不同标签

python - Django-如何确定 ModelForm init 中的字段类型?

python - 使用注释时在 Django 中显示选择字段的名称

python - Django channel + 在发布请求后发送 websocket 消息

python - "__method__"和 "method"之间的区别