javascript - 在 django admin 中禁用/隐藏不必要的内联表单

标签 javascript django django-models django-forms django-admin

我有模型“产品”模型和许多其他模型,它们的外键作为产品。 目前我有 ProductAdmin 行

class Product:
    type_of_product=models.ChoiceField()

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm
    inlines = [Inline1, Inline2, Inline3, Inline4,....Inline 15]

因此,产品管理添加页面看起来非常大。在这里,我只需要根据 type_of_product 的值填充一些内联模型。内联模型的许多条目都是空的。

因此本质上内联与 Product 的 type_of_product 属性相关。当前,用户必须注意根据他选择的 type_of_product 在哪些内联中填充值。

现在我想解决这个问题。

选项 1) 根据用户通过 AJAX 选择的 type_of_product 动态渲染内联表单。(不知道如何做)

选项 2) 禁用或隐藏不必要的内联,这样他就看不到不相关模型的内联形式。

任何人都可以帮忙解决这个问题吗?

最佳答案

您可以根据当前对象修改内联,只需覆盖 ModelAdminchange_view 方法即可。在您的 ProductAdmin 中添加如下内容:

def change_view(self, request, object_id, form_url='', extra_context=None):
    product = Product.objects.get(pk=object_id)
    current_inlines = []
    # CODE TO FILL INLINES BASED ON PRODUCT
    self.inlines = current_inlines
    return super(ProductAdmin, self).change_view(request, object_id, form_url, extra_context=extra_context)

关于javascript - 在 django admin 中禁用/隐藏不必要的内联表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25772856/

相关文章:

javascript - 带有类的事件处理程序

python - 如何在 Django 1.5 中反转自定义管理 url?

python - 创建时如何使Django模型运行某些功能

python - 通过抽象模型的模型

javascript - 如何禁用导航覆盖中的主体滚动并在主体中启用它?

javascript - 在文本框中,当我按 ENTER 时如何提交表单以及当我按 shift+ENTER 时如何插入新行

javascript - 按回车键提交表单时使用 Markdown

python - 在获取静态 django 文件时收到 404 错误

python - 在升级到 Django 1.8 时,为什么我会收到 AttributeError 'ManyToManyRel' object has no attribute 'rel' ?

python - 如何在 django admin 中显示其他模型的只读数据?