# Persisting Nested Objects with elasticsearch-dsl

**URL:** <https://discuss.elastic.co/t/persisting-nested-objects-with-elasticsearch-dsl/580>\
**Category:** Elasticsearch\
**Created:** [May 12, 2015, 8:50pm UTC](https://discuss.elastic.co/t/persisting-nested-objects-with-elasticsearch-dsl/580 "2015-05-12T20:50:56Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![AndyBarilla](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/andybarilla/32/44863_2.png) [@AndyBarilla](https://discuss.elastic.co/u/AndyBarilla)\
**Post date:** [May 12, 2015, 8:50pm UTC](https://discuss.elastic.co/t/persisting-nested-objects-with-elasticsearch-dsl/580/1 "2015-05-12T20:50:56Z")

</div>

I'm attempting to persist an object to elasticsearch with a nested object. However instead of using syntax like:

```
child = field.Object(properties={'name': field.String()})

```

I'd like to have child be it's own object.

```
from elasticsearch_dsl import field, document
from elasticsearch_dsl import connections
connections.connections.create_connection(hosts=['localhost'], timeout=20)

class Child(field.Object):
    name = field.String()

class Parent(document.DocType):
    name = field.String()
    child = Child()

    class Meta:
        index = 'myindex'

parent = Parent(name='test parent')
parent.child = Child(name='test other child')
parent.save()

```

However, doing it this way results in:

```
  File "/home/abarilla/PycharmProjects/iocdb/iocdb/model/test.py", line 25, in <module>
    parent.child = Child(name='test other child')
  File "/home/abarilla/.virtualenvs/iocdb/local/lib/python2.7/site-packages/elasticsearch_dsl/document.py", line 115, in __setattr__
    return super(DocType, self). __setattr__ (name, value)
  File "/home/abarilla/.virtualenvs/iocdb/local/lib/python2.7/site-packages/elasticsearch_dsl/utils.py", line 418, in __setattr__
    value = self._doc_type.mapping[name].to_python(value)
  File "/home/abarilla/.virtualenvs/iocdb/local/lib/python2.7/site-packages/elasticsearch_dsl/field.py", line 63, in to_python
    return self._to_python(data)
  File "/home/abarilla/.virtualenvs/iocdb/local/lib/python2.7/site-packages/elasticsearch_dsl/field.py", line 133, in _to_python
    return self._doc_class(self.properties, **data)
TypeError: type object argument after ** must be a mapping, not Child

```

Is there a way I can accomplish this?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 12:14am UTC](https://discuss.elastic.co/t/persisting-nested-objects-with-elasticsearch-dsl/580/2 "2017-07-06T00:14:24Z")

</div>


