I've tried searching the internet for this but can't seem to find anything (sorry if this is in here somewhere).
I'm using Mongoengine with Django and have the following model:
class Event(EmbeddedDocument):
tagged_event = StringField(max_length=255)
example_event = StringField(max_length=255)
severity = StringField(max_length=4)
created_by = StringField(max_length=255)
created_on = DateTimeField()
modified_by = StringField(max_length=255)
modified_on = DateTimeField()
class Definition(Document):
title = StringField(max_length=255)
description = StringField(max_length=255)
resolution = StringField(max_length=255)
events = ListField(EmbeddedDocumentField(Event))
created_by = StringField(max_length=255)
created_on = DateTimeField()
modified_by = StringField(max_length=255)
What I want to do is return every "Event" in the collection of Definitions but not the "Definition" in the view.
Any ideas?
Many thanks!
****UPDATE****
I've found a work around:
I created the Event as a separate app in Django and set a ReferenceField to the imported Definition from the other app.
In the EventView I set the reference field useing the ID o the definition.
class Event(Document):
tagged_event = StringField(max_length=255)
example_event = StringField(max_length=255)
severity = StringField(max_length=4)
definition = ReferenceField(Definition)
created_by = StringField(max_length=255)
created_on = DateTimeField()
modified_by = StringField(max_length=255)
modified_on = DateTimeField()
views.py
def post(self, request):
serializer = EventSerializer(data=request.data)
if not serializer.is_valid():
return Response(serializer.data, status=status.HTTP_400_BAD_REQUEST)
else:
data = serializer.data
date = datetime.datetime.now()
Event.objects.create(tagged_event=data['tagged_event'], example_event=data['example_event'], severity=data['severity'], definition=data['definition'], created_by=data['created_by'], created_on=date, modified_by=data['modified_by'], modified_on=date)
return Response(serializer.data, status=status.HTTP_201_CREATED)
Although I would still like to know if it's possible to filter out all embeeded documents in all documents.