mongoengine 中如何添加带格式的字符串(换行,空格等)

发布于 2022-08-31 20:42:33 字数 808 浏览 18 评论 0

使用Django框架.

django 中 CharField 对应 mongoengine 的 StringField. 但是TextField 在 mongoengine 无对应类型.TextField可以保存带格式的字符串,而CharField不行

查看django 文档说是可以重写,modelform.
按照说明文档添加相应配置报错:

File "/package/local/lib/python2.7/site-packages/django/forms/models.py", line 153, in fields_for_model
    for f in sorted(opts.fields + opts.many_to_many):
AttributeError: 'MetaDict' object has no attribute 'fields'

django相关文档:
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

我理解是mongoengined的字段类型好像和django的的modelForm不匹配,
现在也不知道怎么改?

谁能告诉我如果让mongoengine 中的某个字段添加带格式的字符串(换行,空格等)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可爱暴击 2022-09-07 20:42:33

其实我的问题很简单,之前由于设置的mongo的字符大小,即此属性:StringField(max_length=40)。所有在djangoadmin后台中看到都是input输入框,而我想生成的是textarea。

现在有两个办法:

办法一比较麻烦,重写后台form,已经实现!

class Test(Document):
    number = StringField(max_length=10,required = True)

class Test_Form(DocumentForm):
    class Meta:
        model = Test
        fields =('number')
        widgets = {
            'answer': forms.Textarea(attrs={'cols': 80, 'rows': 20}),
        }

第二个办法,在model中缺省max_length即可实现相应效果

  class Test(Document):
    number = StringField()
流殇 2022-09-07 20:42:33

stringField中传入regex参数即可,至于换行、空格什么的,就是正则表达式的内容了:

pythonfrom mongoengine import *

class User(Document):
    name = StringField(max_length=40, required=True)
    phone = StringField(regex='^1\d{10}
, required=True)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文