Django | Queryset ManyToMany Отношения через экземпляр
Я хотел бы отобразить различные даты для каждого курса. Курс также может иметь несколько дат. К сожалению, я не могу найти решение.
Модели:
class Course(models.Model):
course_number = models.CharField(max_length=24, blank=True)
course_location = models.ForeignKey(Course_location, on_delete=models.CASCADE)
course_dates = models.ManyToManyField('Course_dates', through="Course_Course_dates")
def __str__(self):
return self.course_number
class Course_Course_dates(models.Model):
course = models.ForeignKey(Course, on_delete=models.CASCADE)
course_dates = models.ForeignKey(Course_dates, on_delete=models.CASCADE)
def __str__(self):
return self.id
class Course_dates(models.Model):
date = models.DateField()
start = models.TimeField()
end = models.TimeField()
trainer = models.ManyToManyField('Trainer', through="Course_dates_trainer")
def __str__(self):
return self.date.strftime("%d.%m.%Y")
Вид:
def course_list(request):
courses = Course.objects.all()
course_list = []
for course in courses:
course_location = course.course_location.description
dates = course.course_dates.all()
course_list.append({'course': course, 'course_location': course_location, 'dates': dates,})
context = { 'course_list': course_list, }
return render(request, 'kursverwaltung_tenant/course.html', context)
Спасибо за помощь!!!
Ваш набор запросов курсов уже имеет доступ к датам курсов через внешний ключ, поэтому вам не нужно запускать второй набор запросов дат в представлении, чтобы получить к ним доступ.
Когда вы перебираете курсы, вам нужно выполнить второй цикл по датам этих курсов в вашем шаблоне. Вот пример этого: Отображение значения внешнего ключа в шаблоне django