Как вложить абстрактные отношения в Django каркас отдыха? - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть модель под названием Layer, которая имеет отношение один к одному с Geometry, и Geometry имеет следующий дизайн:

class Geometry(models.Model):
    pass

class Circle(Geometry):
    radius = models.CharField(max_length=255)

class Rectangle(Geometry):
    height = models.CharField(max_length=255)
    width = models.CharField(max_length=255)

Как мне определить сериализатор Layer, чтобы сделать слой json содержат свойство под названием «геометрия» независимо от того, с какой дочерней моделью он связан? Я не хочу, чтобы свойство называлось ни окружностью, ни прямоугольником.

Заранее спасибо!

1 Ответ

0 голосов
/ 16 февраля 2020

Вы можете использовать отдельные сериализаторы для каждой дочерней модели. С параметром типа вы можете решить, какой сериализатор используется для ключа геометрии в dict.

data = {'geometry': CircleSerializer(circle_model_object).data if type == 'circle' else RectangleSerializer(rectangle_model_object).data}
...