Django 如何在视图中获取模型的死者

Django 如何在视图中获取模型的死者,django,django-models,Django,Django Models,我有两个模型对象:GEO、SHIP和CREW。船员、船舶和geo之间分别存在一对多关系。一个GEO中可以有0-n艘船舶。对于每艘船,可能有0-n 如果我拉出地理位置列表: GEO = models.Geo.objects.all() 我如何引用模板中的所有GEO、循环船舶,以及每艘船舶、船员 这是我的模型: class Geo (Unit): coverage = models.TextField(null=True) def __str__(self): r

我有两个模型对象:GEO、SHIP和CREW。船员、船舶和geo之间分别存在一对多关系。一个GEO中可以有0-n艘船舶。对于每艘船,可能有0-n 如果我拉出地理位置列表:

GEO = models.Geo.objects.all()
我如何引用模板中的所有GEO、循环船舶,以及每艘船舶、船员

这是我的模型:

class Geo (Unit):
    coverage = models.TextField(null=True)

    def __str__(self):
        return self.Name


class Ship (Unit):
    HullNumber = models.TextField(null=True)
    Origin = models.CharField(max_length=3, choices=ALLEGIENCE_CHOICES, default='FED')
    Geo = models.ForeignKey(Geo)

    def __str__(self):
        return self.Name


class Crew (models.Model):
    CrewType = (
        ('O', 'Officer'),
        ('E', 'Enlisted'),
        ('C', 'Civilian'),
    )
    Geo = models.ForeignKey(Geo)
    Ship = models.ForeignKey(Ship)
    Type = models.CharField(max_length=1, choices=CrewType)
    Position = models.CharField(max_length=20)

    def __str__(self):
        return self.Position

感谢
views.py中的,您只需传递
Geo
列表即可:

def crew_list(request):
    return render(request, 'crew_list.html', {'geo_list': Geo.objects.all()})
{% for geo in geo_list %}
    <h1>{{ geo }}</h1>
    {% for ship in geo.ship_set.all %}
        <h2>{{ ship }}</h2>
        <ul>
            {% for crew in ship.crew_set.all %}
                <li>{{ crew }} - {{ crew.get_Type_display }}</li>
            {% endfor %}
        </ul>
    {% endfor %}
{% endfor %}
A然后在模板中迭代每个
Geo
的相关船舶/船员:

def crew_list(request):
    return render(request, 'crew_list.html', {'geo_list': Geo.objects.all()})
{% for geo in geo_list %}
    <h1>{{ geo }}</h1>
    {% for ship in geo.ship_set.all %}
        <h2>{{ ship }}</h2>
        <ul>
            {% for crew in ship.crew_set.all %}
                <li>{{ crew }} - {{ crew.get_Type_display }}</li>
            {% endfor %}
        </ul>
    {% endfor %}
{% endfor %}
{地理位置列表%中的地理位置的%
{{geo}
{geo.ship_set.all%}
{{ship}}
    {ship.crew\U set.all%}
  • {{crew}}-{crew.get_Type_display}
  • {%endfor%}
{%endfor%} {%endfor%}

另一个选项是将由Geo/Ship排序的
船员列表传递给模板,并使用模板标签显示船员的“更改”Geo和Ship。

尝试文档,然后尝试一些代码对于初学者,显示您的模型定义。