Как сериализовать несколько моделей с помощью одного сериализатора с помощью DjangoRestFramework?

#django #serialization #django-models #django-views #django-rest-framework

#django #сериализация #django-модели #django-просмотры #django-rest-framework

Вопрос:

У меня есть эти модели, все из которых имеют PointField:

 class Place(models.Model):
    title = models.CharField(max_length=75, verbose_name='Заголовок')
    category = models.ForeignKey(PlaceCategory, verbose_name='Категория')
    ...
    point = geomodels.PointField(geography=True, blank=True, null=True)
    ...


class Event(models.Model):
    title = models.CharField(max_length=75, verbose_name='Заголовок')
    address = models.CharField(max_length=255, blank=True, null=True, verbose_name='Адрес')
    city = models.ForeignKey(City, verbose_name='Город')
    ...
    point = geomodels.PointField(blank=True, null=True)
    ...


class Meeting(models.Model):
    title = models.CharField(max_length=75)
    participants = models.ManyToManyField(User, related_name='participating_meetings')
    ...
    point = geomodels.PointField(blank=True, null=True)
    ...
  

В проекте у меня есть /points URL-адрес API. По этому URL я хочу вернуть отфильтрованный набор или все точки, чтобы показать их на карте.
Я проверил документацию DRF, есть пример, как создать сериализатор для одной модели, но как мне создать представление API для этих нескольких моделей?

Комментарии:

1. опубликуйте свой лучший снимок при создании сериализатора. (не связано: почему вы используете стороннее поле point вместо geodjango?)

Ответ №1:

Такой вариант использования типичен для случаев, когда вам нужно удалить автоматически созданные по умолчанию вещи (сериализатор / просмотр) и создать свои собственные. Я бы сам собрал данные, прогнал их через PointSerializer — может быть необязательным — который наследовал Serializer бы и возвращал результат.

Комментарии:

1. Не могли бы вы привести фрагмент такого PointSerializer ?