Джанго- прохождение параметров / фильтрация вопроса - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь перестроить сайт, который изначально был написан на php, в django. Я новичок в Джанго. Я застрял на некоторых довольно базовых функциях, но нигде не могу найти ответ, поэтому я спрашиваю здесь.

Я создаю фэнтезийный сайт по бейсболу. У меня есть следующие 2 модели:

class IbcDivisions(models.Model):
    division = models.AutoField(primary_key=True)
    div_abbr = models.CharField(unique=True, max_length=255)
    div_name = models.CharField(max_length=255)
    league = models.ForeignKey('IbcLeagues', models.DO_NOTHING, 
    db_column='league')

class Meta:
    managed = False
    db_table = 'ibc_divisions'


class IbcLeagues(models.Model):
    league = models.AutoField(primary_key=True)
    league_abbr = models.CharField(max_length=255)
    league_name = models.CharField(max_length=255)

class Meta:
    managed = False
    db_table = 'ibc_leagues'

Эти таблицы предоставляют следующие данные (что вы ожидаете, если вы будете следовать бейсболу):

IbcLeagues:

league  league_abbr   league_name
  1         AL           American League
  2         NL           National League

IbcDivisions:
division  div_abbr    div_name    league
   1        ALE       AL East       1
   2        ALC       AL Central    1
   3        ALW       AL West       1
   4        NLE       NL East       2
   5        NLC       NL Central    2
   6        NLW       NL West       2

У меня есть этот код в views.py:

def homepage(request):
    ibc_leagues = IbcLeagues.objects.all()

    context = {
        'ibc_leagues' : ibc_leagues,
    }

    return render(request, 'ibc_leagues/index.html', context)

У меня есть подача страницы макета index.html. Index.html имеет этот код:

{% extends 'ibc_leagues/layout.html' %}
{% block content %}
    <h2>Rosters</h2>
    {% for ibcl in ibc_leagues %}
        <h3>{{ibcl.league_name}}</h3>
    {% endfor %}
{% endblock %}

Все это работает, отлично. Это дает:

Реестры

Американская лига

Национальная лига

И, наконец, мой вопрос: как мне пройти и отобразить каждое из подразделений (AL East, Central, West) под каждой лигой?

1 Ответ

0 голосов
/ 17 сентября 2018

Вы на полпути туда.Для доступа к дочерним элементам экземпляра родительской модели вы используете синтаксис modelname_set.Например:

{% for ibcl in ibc_leagues %}
    <h3>{{ibcl.league_name}}</h3>
    {% for division in ibcl.ibc_divisions_set.all %}
        <h4>{{ division.div_abbr }}: {{ division.div_name }}</h4>
    {% endfor %}    
{% endfor %}
...