Django ORM: аннотируйте набор запросов с указанным значением c, хранящимся в JSONField - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел бы " аннотировать " набор запросов (связанный с моделью, которая может называться My_Model_A) со значениями, хранящимися в JSONField (давайте назовем его coefficients) определенного c экземпляр другой модели (My_Model_B). Например, значение coefficients может быть {"6500":1, "7201":2, "2003":1.5}, где 6500, 7201 и 2003 являются первичными ключами экземпляров My_Model_A, которые я хочу собрать в наборе запросов. В этом конкретном c случае я хотел бы иметь возможность легко получить доступ к значениям 1, 2, 1.5 в моем Django объекте QuerySet.

Конкретно, каким я являюсь в настоящее время Делаем так:

coefficients = My_Model_B.objects.latest().coefficients    # JSONField
results = My_Model_A.objects.filter(pk__in=coefficients).values('pk', 'name')
results = list(results)
for result in results:
    result['coefficient']=coefficients[str(result['pk'])]

Однако, я думаю, есть более эффективный способ сделать это и избежать этого " для " l oop, особенно для больших наборов запросов. Любая помощь приветствуется. Заранее спасибо!

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