【问题标题】:Django | Queryset ManyToMany Relation through Instance姜戈 |通过实例查询集多对多关系
【发布时间】:2021-10-12 00:05:37
【问题描述】:

我想显示每门课程的不同日期。一个课程也可以有多个日期。不幸的是,我找不到解决方案。

型号:

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)

谢谢你的帮助!!!

【问题讨论】:

  • 请解释什么不起作用。
  • 我想显示每门课程的不同日期。但模板不显示任何日期。这是我的模板:{% for object in course_list %} <tr class="small"> <td><a href={{ object.id }}><i class='bx bx-edit' ></i></a></td> <td> {{ objects.dates }} </td> [...]

标签: django


【解决方案1】:

您的课程查询集已经可以通过外键访问您的课程日期,因此您无需在视图中运行第二个日期查询集即可访问它们。

当您循环浏览课程时,您需要在模板中对这些课程的日期进行第二次循环。这是一个例子: Display foreign key value in django template

【讨论】:

  • 非常感谢!我之前什至有正确的解决方案。但是我在模板中犯了一个错误。 “.all()”而不是“.all”
猜你喜欢
  • 2011-10-09
  • 1970-01-01
  • 2011-12-20
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 2019-01-04
  • 1970-01-01
相关资源
最近更新 更多