Используя Django, как отфильтровать от объекта на основе FK, используя столбец и получить различные значения - PullRequest
0 голосов
/ 26 сентября 2019

Мой запрос к БД приведен ниже:

select distinct m.topic
from education.sessions s, education.modules m
where s.subject_id = 'Biology'
and s.module_id = m.id
and m.status = 'Active'
order by m.topic

Я пробую эквивалент вышеупомянутого в QuerySet, и мне кажется, что я его не получаю. Во-первых, я не знаю, где включить статус =Активная проверка и «Заказ по».

Сессия и Модуль - это мои 2 таблицы с Сессией, имеющей FK на модуле.Модуль имеет 2 столбца Тема и Тема, и мне нужны уникальные темы для данной темы, если статус = 'Активный'

В Views.py у меня есть следующее:

def load_topics(request):
    subject = request.GET.get('subject')
    topics = Session.objects.filter(subject=subject).values_list('module__topic', flat=True).distinct()
    return render(request, 'evaluation/topic_dropdown_list_options.html', {'topics': topics})

1 Ответ

0 голосов
/ 26 сентября 2019

Нечто подобное должно помочь.

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

Если я настраивалВ этом проекте я бы определил связанное имя как modules.

session = models.ForeignKey(
    "Session",
    null=True,
    on_delete=models.CASCADE,
    related_name="modules",
)

. Вы можете отфильтровать с помощью module_set или, если вы измените связанное имя на modules, вот так - замените modules наmodule_set или соответствующее имя, которое вы установили, если не хотите использовать modules

topics = Session.objects.filter(
    subject=subject, 
    modules__status='Active'
).order_by(
    'modules__topic'
).values_list(
    'modules__topic', flat=True
).distinct()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...