简体   繁体   中英

MongoEngine: Embeddeddocument fields do not take default value as none?

I've set the default values for fields in embedded document but when I try to post data it doesn't accept None or Blank values.

Here is what my code looks like-

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)

serializers.py

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

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

Is there anything wrong I'm doing here?

    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 or for that matter DRF does not allow null and blank values for strings. They need to be explicitly mentioned. The bounds imposed on models do not hold inside serializers.

The above mentioned change should help you maintain the validations as required by you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM