localist/api/serializers/event.py

41 lines
1.4 KiB
Python

from rest_framework import serializers
from django.forms.models import model_to_dict
from web.models.event import Event
from web.models.event_category import EventCategory
from web.models.event_tag import EventTag
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = '__all__'
def to_representation(self, instance):
representation = super().to_representation(instance)
event_categories = EventCategory.objects.filter(event=instance).filter(active=True).all()
event_tags = EventTag.objects.filter(event=instance).filter(active=True).all()
categories = []
if event_categories.exists():
for event_category in event_categories:
categories.append({
'id': event_category.category.id,
'name': event_category.category.name,
'description': event_category.category.description,
'_meta': model_to_dict(event_category)
})
tags = []
if event_tags.exists():
for event_tag in event_tags:
tags.append({
'id': event_tag.tag.id,
'name': event_tag.tag.name,
'_meta': model_to_dict(event_tag)
})
representation['categories'] = categories
representation['tags'] = tags
return representation