Изменить SQL-запрос на Django
У меня есть веб-приложение, бэкенд которого использует Django. Я хочу изменить следующий SQL запрос на команду Django ORM:
SELECT distinct t.id, t.title as Textbook,
GROUP_CONCAT(concat(ci.discipline_code, ci.code, " (" , ci.type , ")") SEPARATOR ', ') as CourseCode FROM
TMS_UAT.bms_material m,
TMS_UAT.bms_title t,
TMS_UAT.bms_course c,
TMS_UAT.bms_courseinfo ci
where t.id = m.book_id
and c.id = m.course_id
and ci.id = c.id
and isbn != 'NA'
GROUP BY t.id;
model.py
class CourseInfo(TimeStampedModel): # школа или центр
code = models.CharField(max_length=20, db_index=True)
#код = models.CharField(max_length=20, db_index=True)
название = models.CharField(max_length=190)
note_to_ca = models.CharField(max_length=2000)
school = models.ForeignKey(School, on_delete=models.SET_NULL, blank=True, null=True)
postgraduate = models.BooleanField(default=False) # указать курс аспирантуры
discipline = models.ForeignKey(Discipline, on_delete=models.SET_NULL, blank=True, null=True) # не должно быть null
код_дисциплины = models.CharField(max_length=20, blank=True, null=True)
последний_семестр_представлен = models.CharField(max_length=20, blank=True, null=True)
шаблон = models.CharField(max_length=120, choices=PRESENTATION_PATTERN, blank=True, null=True,
help_text="Шаблон презентации")
тип = models.TextField(blank=True)
available = models.BooleanField(default=True) # означает Active или Retired
Как изменить SQL на команду Django?
Могу ли я использовать необработанные SQL команды в Django?