从其他表预填充可编辑的django管理表单

时间:2018-06-18 20:06:31

标签: python django database django-models django-admin

this is the django admin panel with a table named Committees

这是django管理面板,其中有一个名为Committees的表。 委员会表中有一个名为委员会类型的字段。

有一个名为default的表,其模型定义如下,

class default(models.Model):
    committee_type = models.CharField()
    description = models.CharField()
    quorum = models.InetgerField()

我想做的是, 1)当我在admin中的委员会表中选择委员会类型到市议会时(如屏幕截图),我想将描述和仲裁从默认表填充到管理员本身的委员会表中的描述和仲裁中 2)这些填充的数据应该从默认表中检索,其中委员会类型是市议会 3)这些字段应该在从默认表中填充之后在admin中的委托表中可编辑,并且应该能够保存在此委员会对象中

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以set the initial value for the field加入您喜欢的内容。如文档中所述,您可以将初始值设置为可调用,以便在实例化表单时调用该可调用对象并在字段中预填充返回的值。 callable可以是从数据库中检索适当字段的数据的函数。这将发生在新的委员会(将使用未绑定的表单)而不是您想要编辑的现有委员会(将使用绑定表单)。

因为这是admin,所以可以使用ModelAdmin.form attribute设置要使用的表单类,应该将其设置为适当模型的自定义ModelForm类。

如果您只想设置初始数据,并且没有在此特定管理表单上执行大量其他自定义操作,则可以覆盖ModelAdmin.get_changeform_initial_data method,而不是。

答案 1 :(得分:0)

由于管理面板将由客户端在其PC上使用,因此可以使用下拉列表中的自定义js / jquery事件侦听器来实现。当下拉值改变时,将对服务器进行ajax调用(发送选定的选项),这将返回可以使用jquery在前端填充的所需数据。您必须在views.py文件中编写一个函数/视图,它将返回委员会类型,描述和仲裁的json。

您必须手动将此自定义js添加到相关管理页面的编辑页面的模板中。我不知道这样做的最佳方法,可能会覆盖有问题的模板页面,保持一切相同,只需添加一个指向上述代码的自定义js函数的链接。

希望这有帮助。