Django 1.1 шаблон вопроса - PullRequest
       0

Django 1.1 шаблон вопроса

0 голосов
/ 09 июня 2010

Я немного застрял, пытаясь разобраться с шаблоном Django.

У меня есть 2 объекта, кластер и узел

Я бы хотел простую страницу со списком ...

[Cluster 1]
[associated node 1]
[associated node 2]
[associated node 3]

[Cluster 2]
[associated node 4]
[associated node 5]
[associated node 6]

Я использую Django около 2 дней, поэтому, если я упустил момент, пожалуйста, будьте осторожны:)

Модели -

class Node(models.Model):
    name = models.CharField(max_length=30)
    description = models.TextField()
    cluster = models.ForeignKey(Cluster)

    def __unicode__(self):
        return self.name

class Cluster(models.Model):
    name = models.CharField(max_length=30)
    description = models.TextField()

    def __unicode__(self):
        return self.name

Просмотров -

def DSAList(request):

    clusterlist = Cluster.objects.all()
    nodelist = Node.objects.all()

    t = loader.get_template('dsalist.html')
    v = Context({
                 'CLUSTERLIST' : clusterlist,
                 'NODELIST' : nodelist,
               })

    return HttpResponse(t.render(v))

Шаблон -

<body>
    <TABLE>
    {% for cluster in CLUSTERLIST %}
        <tr>
         <TD>{{ cluster.name }}</TD>
                 {% for node in NODELIST %}
                     {% if node.cluster.id == cluster.id %}
                     <tr>
                       <TD>{{ node.name }}</TD>
                     </tr>
                     {% endif %}
                 {% endfor %}
        </tr>
    {% endfor %}
    </TABLE>
</body>

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 09 июня 2010
{% for cluster in CLUSTERLIST %}
    <tr>
        <td>{{ cluster.name }}</td>
    </tr>
    {% for node in cluster.node_set.all %}
        <tr>
            <td>{{ node.name }}</td>
        </tr>
    {% endfor %}
{% endfor %}

Редактировать: если вы хотите, чтобы каждый узел находился в отдельной строке под кластером, вам тоже нужно немного отредактировать HTML.

Следующие отношения "назад"

Отношения многие-к-одному

1 голос
/ 09 июня 2010

Было бы полезно, если бы вы описали, с какими проблемами вы столкнулись. Но вы не можете сделать это в Django 1.1:

{% if node.cluster.id == cluster.id %}
...
{% endif %}

Вы должны сделать

{% ifequal node.cluster.id cluster.id %}
...
{% endifequal %}

Конечно, правильный способ перебрать такие отношения - это то, как ребус показал вам.

0 голосов
/ 09 июня 2010

Вы можете просто передать список кластеров в шаблон, а затем:

{% for node in cluster.node_set.all %}
     <tr>
        <TD>{{ node.name }}</TD>
     </tr>
{% endfor %}

Ваш метод также должен работать с:

{% for node in NODELIST %}
    {% ifequal node.cluster.id cluster.id %}
        <tr>
          <TD>{{ node.name }}</TD>
          </tr>
    {% endifequal %}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...