我正在为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
方法。
答案 0 :(得分:2)
如果使用choices
参数,则必须预定义可能的值列表。阅读docs的相关部分(该部分的最后两段)。
您可以从模型字段定义中省略choices
参数,并仅在前端呈现HTML select
标记(然后动态填充选项,如您所解释的那样)。
您还可以考虑将CharField
的默认小部件更改为select
代码,例如this answer和this part of the docs show。