如何在模板中使用多个1对多关系的Django模型执行嵌套循环

iszxjhcz  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(119)

我在Django中混来混去,以理解框架并有一个数据库模式来建模高尔夫球场数据。我试图将一个简单的视图放在一起,以查看特定高尔夫球场的洞信息。高尔夫球场有1个或多个Tracks,其中包含1个或多个Tee组,每个Tee组有18个具有不同属性的洞(洞数,标准杆,码数等)。我想格式化一个简单的HTML表格,为所有的发球台组组织的每个轨道包含在一个特定的高尔夫球场。* 我有麻烦弄清楚如何在模板中的结构循环,以这种方式格式化数据。*

以下是我的模型:

class GolfCourse(models.Model):
    """
    This class models the Golf Course Table
    """
    name = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    city = models.CharField(max_length=50)
    state = models.CharField(max_length=50)
    zipcode = models.CharField(max_length=10)

class Track(models.Model):
    """
    This class models a Track within a golf course
    """
    course_id = models.ForeignKey(GolfCourse, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)

class Tees(models.Model):
    """
    This class models a set of Tee markers on a Track
    """
    track_id = models.ForeignKey(Track, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
    rating = models.FloatField()
    slope = models.FloatField()

class HoleInfo(models.Model):
    """
    This class models the information for a hole associated with a Tee
    """
    tee_id = models.ForeignKey(Tees, on_delete=models.CASCADE)
    hole_number = models.SmallIntegerField()
    par = models.SmallIntegerField()
    handicap = models.SmallIntegerField()
    yardage = models.SmallIntegerField()

字符串

以下是我的view函数中的查询:

course_data =  HoleInfo.objects.select_related("tee_id__track_id__course_id").filter(tee_id__track_id__course_id=pk)


我能够弄清楚如何访问相关模型对象中的字段,例如与HoleInfo对象相关联的GolfCourse名称,但我遇到的问题是如何访问模板中的迭代器,以便我可以为所有Track,Track中的所有Tee以及每个Tee的所有18个HoleInfo对象创建嵌套循环。

我的模板截图:

...
<h1>{{ course_detail.tee_id.track_id.course_id.name }}</h1>
{% for track in course_detail.??? %}
    {% for tee in ??? %}
        <-- Format all 18 hole objects associated with this tee object into a table -->
    {% endfor %}
{% endfor %}
...

qybjjes1

qybjjes11#

以覆盖所需的字段

<h1>{{ course_detail.tee_id.track_id.course_id.name }}</h1>
{% for track in course_detail %}
    
    {{ track.tee_id }}
    {{ track.tee_id.name }}
    {{ track.tee_id.track_id.name }}

{% endfor %}

字符串

相关问题