Python mongoengine.fields.DictField() Examples
The following are 5
code examples of mongoengine.fields.DictField().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
mongoengine.fields
, or try the search function
.
Example #1
Source File: test_basic.py From django-rest-framework-mongoengine with MIT License | 6 votes |
def test_field_options(self): class TestSerializer(DocumentSerializer): class Meta: model = FieldOptionsModel fields = '__all__' expected = dedent(""" TestSerializer(): id = ObjectIdField(read_only=True) required_field = IntegerField(required=True) int_null_field = IntegerField(allow_null=True, required=False) string_null_field = CharField(allow_blank=True, allow_null=True, required=False) required_list_field = ListField(allow_empty=False, child=IntegerField(required=False), required=True) non_required_list_field = ListField(child=IntegerField(required=False), required=False) required_dict_field = DictField(allow_empty=False, required=True) choices_field = ChoiceField(choices=(('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')), required=False) length_limit_field = CharField(max_length=12, min_length=3, required=False) value_limit_field = IntegerField(max_value=12, min_value=3, required=False) decimal_field = DecimalField(decimal_places=4, max_digits=8, max_value=9999, required=False) """) assert repr(TestSerializer()) == expected
Example #2
Source File: test_compound.py From django-rest-framework-mongoengine with MIT License | 6 votes |
def test_basic(self): class TestSerializer(DocumentSerializer): class Meta: model = BasicCompoundDoc fields = '__all__' expected = dedent(""" TestSerializer(): id = ObjectIdField(read_only=True) list_field = ListField(required=False) int_list_field = ListField(child=IntegerField(required=False), required=False) dict_field = DictField(required=False) int_dict_field = DictField(child=IntegerField(required=False), required=False) int_map_field = DictField(child=IntegerField(required=False), required=False) """) assert repr(TestSerializer()) == expected
Example #3
Source File: serializers.py From django-rest-framework-mongoengine with MIT License | 5 votes |
def build_compound_field(self, field_name, model_field, child_field): if isinstance(model_field, me_fields.ListField): field_class = drf_fields.ListField elif isinstance(model_field, me_fields.DictField): field_class = drfm_fields.DictField else: return self.build_unknown_field(field_name, model_field.owner_document) field_kwargs = get_field_kwargs(field_name, model_field) field_kwargs.pop('model_field', None) if child_field is not None: field_kwargs['child'] = child_field return field_class, field_kwargs
Example #4
Source File: test_compound.py From django-rest-framework-mongoengine with MIT License | 5 votes |
def test_nested(self): class TestSerializer(DocumentSerializer): class Meta: model = NestedCompoundDoc fields = '__all__' expected = dedent(""" TestSerializer(): id = ObjectIdField(read_only=True) dict_list_field = ListField(child=DictField(required=False), required=False) list_dict_field = DictField(child=ListField(required=False), required=False) list_dict_list_field = ListField(child=DictField(child=ListField(required=False), required=False), required=False) """) assert repr(TestSerializer()) == expected
Example #5
Source File: serializers.py From django-rest-framework-mongoengine with MIT License | 4 votes |
def recursive_save(self, validated_data, instance=None): """ Recursively traverses validated_data and creates EmbeddedDocuments of the appropriate subtype from them. Returns Mongonengine model instance. """ # me_data is an analogue of validated_data, but contains # mongoengine EmbeddedDocument instances for nested data structures # instead of OrderedDicts. # # For example: # validated_data = {'id:, "1", 'embed': OrderedDict({'a': 'b'})} # me_data = {'id': "1", 'embed': <EmbeddedDocument>} me_data = dict() for key, value in validated_data.items(): try: field = self.fields[key] # for EmbeddedDocumentSerializers, call recursive_save if isinstance(field, EmbeddedDocumentSerializer): me_data[key] = field.recursive_save(value) if value is not None else value # issue when the value is none # same for lists of EmbeddedDocumentSerializers i.e. # ListField(EmbeddedDocumentField) or EmbeddedDocumentListField elif ((isinstance(field, serializers.ListSerializer) or isinstance(field, serializers.ListField)) and isinstance(field.child, EmbeddedDocumentSerializer)): me_data[key] = [] for datum in value: me_data[key].append(field.child.recursive_save(datum)) # same for dicts of EmbeddedDocumentSerializers (or, speaking # in Mongoengine terms, MapField(EmbeddedDocument(Embed)) elif (isinstance(field, drfm_fields.DictField) and hasattr(field, "child") and isinstance(field.child, EmbeddedDocumentSerializer)): me_data[key] = {} for datum_key, datum_value in value.items(): me_data[key][datum_key] = field.child.recursive_save(datum_value) # for regular fields just set value else: me_data[key] = value except KeyError: # this is dynamic data me_data[key] = value # create (if needed), save (if needed) and return mongoengine instance if not instance: instance = self.Meta.model(**me_data) else: for key, value in me_data.items(): setattr(instance, key, value) if self._saving_instances: instance.save() return instance