使用mongoengine实现django表单。

mongodbforms的Python项目详细描述


这是django的mongoengine模型表单的实现 文件。

要求

支持的字段类型

mongodbforms支持所有具有简单表示的字段 在django的formfields中(intfield、textfield等)。除此之外 支持ListFieldsMapFields

文件字段

mongodbforms处理文件上传就像处理普通的django表单一样。 上载的文件使用mongoengine字段存储在gridfs中。 因为gridfs没有目录并且将文件存储在平面空间中, 已存在名称的已上传文件得到一个唯一的文件名 表格<filename>_<unique_number>.<extension>

容器字段

对于像ListFieldsMapFields这样的容器字段,非常简单 使用小部件。小部件在 适当的字段加上一个空字段。这主要是为了 引入任何javascript依赖项,后端代码将很高兴 处理任何类型的动态表单,只要字段id是 在post数据中连续编号。

您可以在列表或映射字段中使用任何其他受支持的字段。 包括MongoEngine不支持的FileFields。 在容器字段中。

用法

mongodbforms支持普通文档和嵌入式文档的表单。

正常文件

将mongodbforms与普通文档一起使用,将djangos表单替换为 Mongodbform表单。

frommongodbformsimportDocumentFormclassBlogForm(DocumentForm)...

嵌入文档

对于嵌入文档,请使用EmbeddedDocumentForm。的元对象 表单必须提供嵌入的字段名。嵌入式 对象将附加到此。表单构造函数需要 附加参数:嵌入文档被添加到的文档 还有一个可选的位置参数。

如果没有提供位置,则表单会将新的嵌入文档添加到 如果表单已保存,请列出。编辑存储在列表中的嵌入文档 字段position参数是必需的。如果你提供一个职位 没有使用 位置参数。

如果嵌入字段是纯嵌入字段,则当前对象是 只是覆盖。

# forms.pyfrommongodbformsimportEmbeddedDocumentFormclassMessageForm(EmbeddedDocumentForm):classMeta:document=Messageembedded_field_name='messages'fields=['subject','sender','message',]# views.py# create a new embedded objectform=MessageForm(parent_document=some_document,...)# edit the 4th embedded objectform=MessageForm(parent_document=some_document,position=3,...)

文档

理论上,文档Django’s modelform 文档应该是您所需要的全部(除了一个例外;请阅读 打开)。如果您发现Mongodbforms所做的事情之间存在差异 Django的文档说,你很可能发现了一个bug。 请report it

表单域生成

因为mongoengine文档上的字段没有形式的概念 fields mongodbform使用生成器类为 未显式设置的数据库字段。

要使用自己的磁场发生器,可以为 在settings.py或 您可以在表单的元类上使用formfield_generator选项。

默认生成器在^{tt10}中定义$ 并且应该可以很容易地覆盖表单字段和小部件。如果你设置 文档窗体上的生成器还可以传递两个dict field_overrideswidget_overrides__init__。一份清单 查看MongoFormFieldGenerator中的有效键。

# settings.py# set the fieldgeneretor for the whole applicationMONGODBFORMS_FIELDGENERATOR='myproject.fieldgenerator.GeneratorClass'# generator.pyfrommongodbforms.fieldgeneratorimportMongoFormFieldGeneratorclassMyFieldGenerator(MongoFormFieldGenerator):...# forms.pyfrommongodbformsimportDocumentFormfromgeneratorimportMyFieldGeneratorclassMessageForm(DocumentForm):classMeta:formfield_generator=MyFieldGenerator

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java与Groovy正则表达式匹配混淆   java控制台未定义为JSNI   主目录中的java指针异常   java如何获取hashmap中的arrayList的大小   ApachePOI用于文本,Java代码中的word doc(.docx)中没有进行追加   Ruby对象到Java对象   JavaSpringJPA哈希集只返回一个值   Java在执行由配置了精确类路径参数的mavenjarpluin生成的可执行jar时无法找到依赖项   java我试图在画布上写一个文本,但什么也没发生   java HTTP 404源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。不起作用   java提取小数点后的最后一个数字   oop Java:无法访问对象的元素   PHP URL中RecyclerView中的java句柄空异常   不调用OnCreateViewHolder的java Update RecyclerView适配器项