Как включить связанные поля при сериализации в geojson в django

У меня есть две модели. Первая содержит данные о точке. Вторая является ForeignKey, обратным к точечной модели. Как мне включить поля из второй модели при серализации первой модели?

class Site(models.Model):
    ptgeom = models.PointField(srid=2953, blank=True, null=True)
    ...

class File(models.Model):
    site = models.ForeignKey(Site, on_delete=models.PROTECT, blank=True, null=True)
    name = models.CharField(verbose_name='File', max_length=250, blank=True, null=True)
    ...

В моем представлении я строю кверисет видимых точек и пытаюсь передать его обратно на карту:

def file_points(request):

    ...
    q_set = Dmsesite.objects.filter(ptgeom__contained=geom)
    points_as_geojson = serialize('geojson', q_set, geometry_field='ptgeom')    
    return JsonResponse(json.loads(points_as_geojson))

Из этого я получаю json всех записей точек в q_set. Я хочу, чтобы он включал также записи Файла.

Я искал, но действительно заблудился. Я пробовал .select_related(), но со стороны сайта модель File на самом деле не является связанным полем.

Я попытался ответить на этот вопрос: Определить поля связанной модели в поле сериализатора Django GeoJSON. и создать CustomSerializer, но я все еще не получил ни одной записи File.

Другой возможностью может быть создание нового набора запросов на противоположной стороне (File side) на основе текущего набора запросов (Site), но я не уверен, как я это сделаю, поскольку я думаю, что это приведет к созданию нескольких наборов запросов (по одному для каждого сайта)?

Это, кажется, должно быть что-то, что встречается часто, но я полностью застрял. Любая помощь будет очень признательна.

Вернуться на верх