Tortoise-ORM. Отображение внешних сущностей в PyDantic моделях

Рейтинг: 0Ответов: 1Опубликовано: 29.01.2023

Столкнулся с проблемой отображения внешних сущностей в PyDantic моделях.

Имею структуру сущностей в БД:

class User(models.Model):
    id = fields.BigIntField(pk=True)
    username = fields.CharField(max_length=1024, null=True)

class Message(models.Model):
    id = fields.BigIntField(pk=True)
    date = fields.DatetimeField()
    user: fields.ForeignKeyRelation["User"] = fields.ForeignKeyField("models.User", on_delete=fields.CASCADE)
    text = fields.TextField()

Мною через pydantic_model_creator созданы модели:

UserRp = pydantic_model_creator(User, name="UserRp")
MessageRp = pydantic_model_creator(Message, name="MessageRp")

Пытаюсь вызвать запрос через конструкцию:

await MessageRp.from_queryset(Message.filter(user=user_id).order_by("-date"))

Возвращает все поля кроме user. Даже если дополнить строку методом prefetch_related("user").

Подскажите в чем может быть проблема. Добавление include-ов в pydantic_model_creator успехом не увенчался

Ответы

▲ 0

Попробуй так -

user = await User.get_or_none(id={id})

pydantic_model = pydantic_model_creator(
        MessageRp,
        name="MessageRp",
        include=("user",),
    ) 

await pydantic_model.from_tortoise_orm(await MessageRp.filter(user=user))