как узнать все django обратный поиск, указывающий на модель - PullRequest
0 голосов
/ 04 марта 2020

У меня есть модель A и несколько моделей (B, C и D), все они с внешним полем, указывающим на A. Я хочу реализовать метод для сбора всех записей в B, C, и D, относящиеся к каждой записи в A, посредством обратного просмотра, установленного во внешних ключах в B, C и D.

Проблема заключается в том, что количество моделей с внешним ключом, указывающим на A, может измениться , поэтому я хочу сделать метод Dynami c, поэтому мне нужно знать модели и их поля, указывающие на A, и их related_name.

Есть ли способ получить эту информацию?

1 Ответ

3 голосов
/ 04 марта 2020

Вы можете использовать класс Meta модели, чтобы получить список всех полей и отфильтровать их, чтобы получить только обратные отношения.

def get_reverse_lookup_fields(model: models.Model):
    return [
        field
        for field in model._meta.get_fields()
        if field.auto_created and not field.concrete
    ]

Здесь вы можете проверить атрибуты поля , а здесь - Meta API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...