在下拉列表中保存动态填充的值

时间:2018-05-21 22:44:57

标签: django model wagtail

我正在为Django使用wagtail CMS,我想为下拉列表添加动态填充的值并将其保存在Page模型上,这是我的代码:

class MyPage(Page):
    domain = CharField(max_length=10, choices=MY_CHOICES)
    subdomain = CharField(max_length=10, choices=[('', '------')]

我有一些前端逻辑可以动态填充子域的选项,但在我点击保存后,我得到了:The page could not be created due to validation errors并且在子域字段中:Select a valid choice. [my value] is not one of the available choices.

我不能使用ForeignKey来填充子域,因为它取决于我们正在使用的外部API服务。

我尝试使用继承自CharField的自定义字段但没有成功,它看起来仅对validate字段执行domain方法。

1 个答案:

答案 0 :(得分:2)

如果使用choices参数,则必须预定义可能的值列表。阅读docs的相关部分(该部分的最后两段)。

您可以从模型字段定义中省略choices参数,并仅在前端呈现HTML select标记(然后动态填充选项,如您所解释的那样)。

您还可以考虑将CharField的默认小部件更改为select代码,例如this answerthis part of the docs show。