【问题标题】:MongoEngine: Embeddeddocument fields do not take default value as none?MongoEngine:嵌入式文档字段不将默认值设为无?
【发布时间】:2023-03-12 10:36:01
【问题描述】:

我已经为嵌入文档中的字段设置了默认值,但是当我尝试发布数据时,它不接受 None 或 Blank 值。

这是我的代码的样子-

models.py

class MetaData(EmbeddedDocument):
    adcode = StringField(max_length=50, default="", blank=True, Null=True)
    additional_html_below_header = StringField(max_length=50, default="")
    adhoc_plus_disable_pacing = BooleanField(default=False)
    adhoc_plus_has_priority = BooleanField(default=False)
    adhoc_server = StringField(max_length=50, default="")
class LandingPage(Document):
    type = StringField(max_length=50, default="")
    meta_clean_URL_tag = StringField(max_length=50, default="")
    meta_name =  StringField(max_length=50, default="")
    created_time = DateTimeField(default=datetime.datetime.now)
    new = BooleanField(default=False)
    meta_data = EmbeddedDocumentField(MetaData)

序列化器.py

class MetaDataSerializer(serializers.EmbeddedDocumentSerializer):
    class Meta:
        model = MetaData

class LandingPageSerializer(serializers.DocumentSerializer):
    meta_data = MetaDataSerializer()
    class Meta:
        model = LandingPage

我在这里做错了什么吗?

【问题讨论】:

  • 你使用的是哪个版本的mongoengine、DRF-mongoengine和DRF?
  • DRF 是 3.3.3 , mongoengine 是 0.10.6 并且 DRF-mongoengine 也是最新的。
  • 你试过allow_null=True吗?
  • 是的,我已经尝试过了(allow_null=True),但没有运气。以某种方式从 UI 管理这个问题。

标签: python django django-rest-framework mongoengine django-mongodb-engine


【解决方案1】:
    class MetaDataSerializer(serializers.EmbeddedDocumentSerializer):
        adcode = serializers.CharField(allow_blank=True,allow_null=True)
        adhoc_server = serializes.CharField(allow_blank=True,allow_null=True)
        additional_html_below_header = serializers.CharField(allow_blank=True,allow_null=True)

        class Meta:
            model = MetaData

DRF-mongoengine 或就此而言,DRF 不允许字符串为空值和空白值。需要明确提及它们。强加给模型的界限在序列化器内部不成立。

上述更改应有助于您按照自己的要求维护验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多