获取外部数据并在django admin中填充表单

时间:2018-12-12 09:52:30

标签: django django-admin

简而言之:

根据其他字段的输入,我想在django admin中填写一些表单字段,然后单击“保存”按钮。

较长版本:

我有2个模型, # many2one -> one2many -> mapped('many2one') this will collect of the records without duplication from the o2m field. # contract -> contract lignes -> products self.contrat_lignes_id.ligne_ids.mapped('product_id').ids SteamGame,它们具有GameInfo的外键。 SteamGame表每天都会被Steam上列出的 all 游戏填充一次,通过获取和解析http://api.steampowered.com/ISteamApps/GetAppList/v0002/SteamGame表将通过管理员手动填充现场。当添加到GameInfo时,我从GameInfo中选择游戏。我为自己添加了一些字段,供我添加信息,选择游戏并获取该信息的https://store.steampowered.com/api/appdetails?appids=GAMEID&l=en后,我想填充一些字段。

我可以使用一些神奇的Django函数来完成此任务吗?或有关如何执行此操作的其他建议?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用javascript来实现。

在您的管理模型上,添加此代码以调用自定义javascript:

class MyAdmin(admin.ModelAdmin):

    class Media:
        js = ('/static/js/myMagicJavascriptThatDoesAllThisStuff.js', 
)

JS将允许用户在保存之前查看要保存的内容。 如果要在保存后提取信息,则应覆盖管理保存功能

答案 1 :(得分:1)

您可以传递一个javascript文件,并使用查询来进行ajax调用,然后使用jquery将值附加到表单中。

 class HistoryConfigurationAdmin(admin.ModelAdmin):
       class Media:
              js = ("customjs/yourjsfile.js",)

并在您项目的静态文件夹中创建一个yourjsfile.js。请注意,在django admin中使用jquery而不是使用$(document)。准备好使用“ jq”代替“ $”符号