gpt4 book ai didi

django - 带有Select Widget的Django ModelForm-使用object.uid作为默认选项值而不是object.id

转载 作者:行者123 更新时间:2023-12-04 22:13:46 25 4
gpt4 key购买 nike

我有一个继承自ModelForm的表单,例如:

class ChildModel(ModelForm):
class Meta:
model = Documents
fields = ('secretdocs')
widgets = {
'secretdocs': Select(attrs={'class': 'select'}),
}

模型“secretdocs”具有一个uid。但是,当它打印出select和option时,option的值显示如下:
<select class="select" id="id_secretdocs" name="secretdocs">
<option value="1">My Secret Doc</option>
</select>

但是我希望它具有选项的uid:
<select class="select" id="id_secretdocs" name="secretdocs">
<option value="cd2feb4a-58cc-49e7-b46e-e2702c8558fd">My Secret Doc</option>
</select>

到目前为止,我已经尝试过使用BaseForm的数据对象并覆盖Select的value_from_datadict方法,但是我敢肯定这不是正确的方法。有人知道我该怎么做吗?

提前致谢。

最佳答案

您可以执行以下操作:

class ChildModel(ModelForm):

secretdocs = forms.ChoiceField(choices=[(doc.uid, doc.name) for doc in Document.objects.all()])
class Meta:
model = Documents
fields = ('secretdocs', )
widgets = {
'secretdocs': Select(attrs={'class': 'select'}),
}

关于django - 带有Select Widget的Django ModelForm-使用object.uid作为默认选项值而不是object.id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com