Трехуровневое вложенное моделирование в DjangoPython

Программы на Python
Ответить
Anonymous
 Трехуровневое вложенное моделирование в Django

Сообщение Anonymous »

У меня возникла проблема: мне нужна глубоко вложенная модель. У меня есть модель под названием «Тема» (она называется по-другому), и в теме у меня может быть много типов. В Типе у меня может быть много Подтипов или ни одного. В подтипе у меня может быть много дополнительных элементов или ни одного.
Структура JSON будет такой:

Код: Выделить всё

{
"id": 5,
"name": "test-theme",
"types": [
{
"type_id": 101,
"value": "test-type",
"subtypes": [
{
"subtype_id": 101,
"value": "test-subtype",
"additionals": [
{
"additional_id": 101,
"value": "test-additional"
}
]
}
]
}
]
}
Что я сделал на данный момент:
Я настроил основные модели -> Тип, Подтип и Дополнения. Поскольку эти модели будут определены и неизменяемы.
Затем я настроил свои модели для создания определяемого пользователем контекста темы. Это единственный раз, когда у типа есть подтипы, а у подтипа есть дополнительные.
Пример того, как я это настраивал:

Код: Выделить всё

class Theme(models.Model):
"""
...
"""

name = models.CharField(max_length=100, unique=True)

...

class ThemeTypeBridge(models.Model):
"""
...
"""

theme = models.ForeignKey(Theme, related_name="types", on_delete=models.CASCADE)
type = models.ForeignKey(Type, related_name="theme_links", on_delete=models.CASCADE)

...
Трехуровневые вложенные данные:

Theme

- ThemeTypeBridge

- ThemeSubTypeBridge

- ThemeAdditionalBridge
У меня проблемы с записываемыми сериализаторами в django, поскольку у меня есть основная модель, имеющая кучу дополнительных вложенных моделей. Тема одна из них. Эта основная модель, modelA, имеет записываемый сериализатор. Однако у меня возникли проблемы с этой ошибкой:

Код: Выделить всё

{"types":[{"type":["Incorrect type. Expected pk value, received Type."],"subtypes":[{"subtype":["Incorrect type. Expected pk value, received Subtype."],"additionals":[{"additional":["Incorrect type. Expected pk value, received Additional."]}]}]}]}
Думаю, у меня вопрос: как правильно смоделировать трехуровневую модель данных в моделях и сериализаторах Django?

Подробнее здесь: https://stackoverflow.com/questions/798 ... d-modeling
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»