Можно ли сделать запрос к базе данных, используя переменную в качестве имени модели? - PullRequest
0 голосов
/ 12 декабря 2018

У меня много моделей в одном приложении.Мне нужно перебрать их на основе соответствующего значения.Например:

for x in dictionary:
    h = x.get() #line to get value from dictionary 
    q = h.objects.get(user=name)

Где h - имя строковой переменной модели, а q - требуемый набор запросов

.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

В django есть метод get_model, который может выполнить это.Может использоваться следующим образом:

def get_model(self, app_label, model_name, seed_cache=True):
0 голосов
/ 12 декабря 2018

Вам необходимо создать дополнительный словарь, который будет сопоставлять возможные входные строки с реальными классами модели, например, вы хотите запросить модель пользователя для строки 'user'.Итак, вы создаете models_mapping = {'user': User}.Затем в цикле вы можете написать

model = models_mapping[h] 
q = model.objects.get(user=name)

Не совсем понятно, что у вас в этом словаре и что такое x.get (), но, надеюсь, это поможет вам в правильном направлении.

...