Пишешь два сериалайзера, один для GET, с твоим, расширенным представлением для связанного Place, другой для POST/PUT с стандартной реализацией которая сериализует связанный объект как его id, потом во вью возвращаешь либо первый либо второй, т.е.:
class EventGETSerializer(serializers.ModelSerializer):
place = PlaceSerializer(read_only=True)
class Meta:
model = Event
fields = ('id', 'title', 'description', 'price', 'place', 'link', 'date', 'time')
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = ('id', 'title', 'description', 'price', 'place', 'link', 'date', 'time')
В вью переопределяешь get_serializer_class метод:
from rest_framework import permissions
class EventList(generics.ListCreateAPIView):
queryset = Event.objects.all()
def get_serializer_class(self):
if self.request.method in permissions.SAFE_METHODS:
return EventGETSerializer
else:
return EventSerializer