from model.blah import Ghosts
我有一个模型有一个看起来像这样的文件
scary_boos = ArrayField(
choice_char_field(Ghosts.TYPE_SELECTION), blank=True, null=True
)
在管理面板中,我正在尝试添加一个表单以显示具有预先确定选项的字段。
class GhostBoosForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print(self.fields["mortgage_type"])
self.fields["scary_boos"].widget = CheckboxSelectMultiple(
choices=self.fields["scary_boos"].choices
)
class Meta:
model = GhostBoos
fields = "__all__"
但是choices=self.fields["scary_boos"].choices
不起作用,还有其他方法可以访问提交的这些选择吗?
为此,您需要访问self.fields["scary_boos"]
的base_field
属性。ArrayField
(看起来只适用于PostgreSQL的东西(基本上将其第一个参数存储在那里,我认为在您的情况下这是一个正常的CharField
(?
更多信息: https://docs.djangoproject.com/en/2.2/ref/contrib/postgres/fields/#arrayfield
(我不得不玩弄self.fields
一点才能找到base_field
,但它似乎可以让您访问所需的内容(。
所以:像self.fields["scary_boos"].base_field.choices[1:]
这样的东西应该做你需要的。我们"切"掉第一个结果,因为 Django 似乎("", "-----")
插入了空白选项(至少对我来说,Django 2.2.7(。
希望有帮助。