[Python] Specify model related fields for selection with only function

Discussão em 'Python' iniciado por Stack, Março 2, 2025.

  1. Stack

    Stack Membro Participativo

    Is it possible specify related model fields for selection with only() function in query?

    In this example I got KeyError: 'provider__description'

    from typing import Optional, List

    from tortoise import fields

    from models import BaseModel


    class Token(BaseModel):
    id = fields.CharField(primary_key=True, max_length=128)
    user = fields.ForeignKeyField(
    model_name="models.User",
    related_name="user_tokens",
    on_delete=fields.CASCADE,
    )
    provider = fields.ForeignKeyField(
    model_name="models.Provider",
    related_name="provider_tokens",
    on_delete=fields.CASCADE,
    )
    expires = fields.DatetimeField(default=0)


    class Provider(BaseModel):
    id = fields.IntField(pk=True)
    url = fields.CharField(max_length=255, unique=True, null=False)
    description = fields.CharField(max_length=255, null=False)
    inbound_id = fields.IntField(null=False)


    async def get_tokens(user_id: Optional[int] = None) -> list[Token]:
    query = Token.all().only("id", "provider__description", "expires").select_related("provider")
    if user_id:
    query = query.filter(user_id=user_id)

    return await query



    With prefetch_related() got same error.

    For solve problem I tried select_relation() and prefetch_related() before only(). And tried

    Continue reading...

Compartilhe esta Página