Я генерирую шаблон в Django. Идея заключается в создании и заполнении навигационных вкладок Bootstrap в соответствии с элементами в параметрах элементов. Например. Если item1 принадлежит комнате1, номер 1 должен отображаться на вкладке и отображаемый там пункт 1. Если item2 также принадлежит комнате 1, его следует поместить в комнату tab1. Та же история относится к комнате2 и т. Д. Из Django POV кажется, что все в порядке, но у меня проблемы с рендерингом.Django + Bootstrap + nav-tabs отображаются неправильно
Ниже вы можете найти мою html-страницу, созданную Django.
{% extends "main.html" %}
{% block items %}
{% if items.count > 0 %}
<div class="tabbable">
<ul class="nav nav-tabs">
{% for roomlist in rooms %}
{% if roomlist.id == 1 %}
<li class="active"><a href="#{{ roomlist.room_name }}" data-toggle="tab">{{ roomlist.room_name }}</a></li>
{% else %}
<li><a href="#{{ roomlist.room_name }}" data-toggle="tab">{{ roomlist.room_name }}</a></li>
{% endif %}
{% endfor %}
</ul>
<div class="tab-content">
{% for roomlist in rooms %}
{% for item in items %}
{% if item.room_id == roomlist.id %}
<div id="{{ roomlist.room_name }}" class="tab-pane active">{{ item.id }}</div>
{% endif %}
{% endfor %}
{% endfor %}
</div>
</div>
{% else %}
<p>No items</p>
{% endif %}
{% endblock %}
С HTML POV также выглядит нормально:
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active"><a href="#Kitchen" data-toggle="tab">Kitchen</a></li>
<li><a href="#Sleep" data-toggle="tab">Sleep</a></li>
</ul>
<div class="tab-content">
<div id="Kitchen" class="tab-pane active">2</div>
<div id="Kitchen" class="tab-pane active">3</div>
<div id="Sleep" class="tab-pane active">4</div>
<div id="Sleep" class="tab-pane active">6</div>
</div>
</div>
модель:
from django.db import models
from django.contrib.auth.models import User
class RoomList(models.Model):
room_name =models.CharField(max_length=150)
user = models.ForeignKey(User)
size = models.DecimalField(max_digits=5, decimal_places=2)
comment = models.TextField()
def __unicode__(self):
return self.room_name
class Item(models.Model):
product = models.CharField(max_length=150)
quantity = models.DecimalField(max_digits=8, decimal_places=3)
price = models.DecimalField(max_digits=7, decimal_places=2)
purchase_date = models.DateField(null=True, blank=True)
warranty = models.DecimalField(max_digits=4, decimal_places=1)
comment = models.TextField()
room = models.ForeignKey(RoomList)
user = models.ForeignKey(User)
def __unicode__(self):
return self.product
Проблема заключается в том, что, когда я нажимаю кнопку обновления, все элементы расположены на вкладке «Кухня », даже те, которые предназначены для« сна ». Позже, когда я нажимаю вкладку «Спящая комната», есть только один элемент - сначала (правильный, так предназначенный для «сна»). Затем, когда я нажимаю на вкладку «Кухня», я увижу первый элемент, также верный, который был предназначен для «Кухни». Знаете ли вы, почему я наблюдаю такие явления? Как это исправить?
Пожалуйста, отправьте свою модель товара, мне нужно кое-что проверить, прежде чем дать вам ответ. –
Опубликовано, пожалуйста, проверьте. –
В вашей модели товара вместо 'room = models.ForeignKey (RoomList)' сделайте это 'room = models.ForeignKey (RoomList, related_name = 'items')', а затем используйте этот код http://pastebin.com/TDquswfy в шаблон. Вам не нужно передавать элементы в контекст запроса, вы можете получить доступ к элементам комнаты в шаблоне 'room.items.all', вот что я сделал. –