gpt4 book ai didi

python - 在自定义 Django 表单字段中与 to_python 相反?

转载 作者:太空狗 更新时间:2023-10-29 21:26:18 28 4
gpt4 key购买 nike

the docs ,有一段关于to_python方法,负责反序列化值。但是推荐的序列化数据并准备好传递给小部件的方法是什么?类似于 get_db_prep_value(),但用于字段?

最佳答案

有方法value()prepare_value() ,后者未记录但在 value() 的末尾调用。如果你阅读 the code您可以搜索 prepare_value 并会发现例如与日期相关的字段在必要时使用它来调整值。

value()as_widget() 调用最后调用 render()小部件上的方法,并传递 value()(以及 prepare_value())返回的值。

最新修改在widget的render()中方法。 Only here happens 到最终字符串表示的转换,这就是为什么在某些用例中(当小部件需要字符串以外的其他数据类型时,例如选择需要 list 的列表> object) 有必要单独覆盖 render()

但是,如果小部件处理字符串(或者您希望进行的修改可以应用于将传递给 render() 的数据类型),那么挂接到 中就足够了code>prepare_value().

from django import forms

class MyField(forms.Field):
def prepare_value(self, value):
return '{}, I am modified!'.format(value)

class MyForm(forms.Form):
foo = MyField(initial="Hello world")

在 shell 中测试代码段:

In [1]: MyForm().as_p()
Out[1]: '<p><label for="id_foo">Foo:</label> <input id="id_foo" name="foo" type="text" value="Hello world, I am modified!" /></p>'

关于python - 在自定义 Django 表单字段中与 to_python 相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30954626/

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