Я пытаюсь просто получить доступ к значениям и именам модели «многие ко многим» в шаблоне по имени.Может кто-нибудь показать мне, что я делаю не так.
У меня есть модель под названием IP.Эта модель может иметь несколько атрибутов.Я хочу вызвать «значение» определенного атрибута.
Например: у меня есть блок IP с именем Foo.Foo имеет атрибут «bar» со значением «удачи».
Как я могу сослаться на именованный атрибут в M2M и его значение из шаблона ??
Это работает, но YUCK !!
{% for attr in ip.attributes.all %}
{% ifequal attr.attribute.name 'vendor' %}
<td>{{ attr.value }}</td>
{% endifequal %}
{% endfor %}
Большое спасибо !!
У меня есть файл models.py, похожий на этот.Соответствующий views.py
def search(request):
context = RequestContext(request)
if not request.POST:
form = { 'form' : IPSearch() }
return render_to_response('ip_catalog/search.html', form,
context_instance = context)
else:
form = IPSearch(request.POST)
if form.is_valid():
response_dict = {}
cd = form.cleaned_data
ips = ips.filter(**cd)
response_dict.update({'ips':ips})
response_dict.update({'success': True })
return render_to_response('ip_catalog/results.html', response_dict,
context_instance = context)
И, наконец, фрагмент шаблона, с которым я борюсь ..
{% for ip in ips %}
<tr>
<td>{{ ip.name }}</td>
<td>{{ ip.release_id }}</td>
<td>{{ ip.release_date }}</td>
<!-- THIS WORKS BUT THERE MUST BE A BETTER WAY! -->
{% for attr in ip.attributes.all %}
{% ifequal attr.attribute.name 'vendor' %}
<td>{{ attr.value }}</td>
{% endifequal %}
{% endfor %}
<!-- THIS DOESN'T WORK! -->
<td>{{ ip.attributes.node.value }}</td>
<!-- OR THIS! -->
<td>{{ ip.attribute_id.foundry }}</td>
<!-- OR THIS.. ! -->
<td>{{ ip.attribute.process }}</td>
</tr>
{% endfor %}