Django ORM Запрос нескольких моделей Обратное отношение - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть основная модель, и у пяти подмоделей из пяти четырех моделей есть отношение иностранного ключа, и у одной модели есть отношение один к одному с основной моделью. Я пытаюсь выполнить запрос к основной модели и извлечь связанные записи из подмодели, отсортированной по «id», и выбрать первую запись. Я пробовал несколько способов добиться этого, но все же, общая операция занимает около 20 секунд, чтобы получить около 6000 записей. Я был бы очень признателен за любую помощь для эффективного извлечения данных из этих моделей.

Model M:
    id
    name
    status

Model SA:
    m = Foreignkey(M)
    sa1

Model SB:
    m = Foreignkey(M)
    sb1

Model SC:
    m = Foreignkey(M)
    sc1

Model SD:
    m = Foreignkey(M)
    sd1

Model SE:
    m = OneToOne(M)
    se1

Я устал от select_related, prefetch_related, но все еще не в состоянии сократить время оборота.

После попытки по-разному, в настоящее время я использую ниже, но из этого я получаю единственные записи, которые имеют данные в подмоделях. Но мне нужно было бы получить все записи из основной модели независимо от данных в подмоделях.

data = M.objects.exclude(
    SA=None,
    SB=None,
    SC=None,
    SD=None,
    SE=None,
)

Я ищу вывод:

{'id': 1212, 'name':'asdasd', 'sa1':'asdasda, 'sb1':'asdasda, 'sc1':'asdasda, 'sd1':'asdasda, 'se1':'asdasda}
...