2016-03-27 10 views
1

forループタグを使用して問題があります。タブには問題ありませんが、タブコンテンツ自体のidの参照は問題になります。で{{スペック}}、今どのように私は、専門分野に関連するコースを表示するにはNAVの丸薬タブでforループタグfor djangoを使用しています

category_page.html

<!-- This is tabs with for loop for data in specializations worked well--> 
    <div class="row" > 
       <div class="list-group col-md-4" role="navigation"> 
        {% for specs in spec %} 
         <button type="button" class="list-group-item" data-toggle="tab" href="{{ specs }}">{{ specs }}</button> 

        {% endfor %} 
       </div> 
<!-- Here is the tab content and it doesn't work well as I need data appears related to the tab itself --> 
       <div class="col-md-8"> 
        <div class="tab-content "> 
         {% for specs in spec %} 
        <div id="{{ specs }}" class="tab-pane fade "> 
          <div class="row"> 
           {% for instances in courses_spec %} 
            <div class="col-sm-6 col-md-6"> 
              <div class="caption"> 
              <h3>{{ instances.name }}</h3> 
              </div> 
            </div> 

           {% endfor %} 


        </div> 
       </div> 

views.py

def categories_pages(request, category_name, speci_name=None): 
    courses = Course_dir.objects.filter(
     availability=True, 
     id_CO__id_S__name=category_name 
    ).order_by('date') 

    courses_spec = Course_dir.objects.filter(
     availability=True, 
     id_CO__name=speci_name 
    ).order_by('date') 

    spec = Specialization.objects.filter(
     id_S__name__contains=category_name 
    ).order_by('name') 
    context = { 
     "courses": courses, 
     "spec": spec, 
     "courses_spec": courses_spec 
    } 
    return render(request, 'categories/categories-page.html', context) 

を私のURLをカスタマイズすることができますURL。 PY

url(r'^categories/(?P<category_name>[-\w]+)/$', views.categories_pages, name='category_detail'), 
url(r'^categories/(?P<category_name>[-\w]+)/(?P<speci_name>[-\w]+)$', views.categories_pages, name='specialization_detail'), 

models.py

class Category(models.Model): 
    name = models.CharField(max_length=100) 
    description = models.CharField(max_length=300, blank=True) 
    slug = models.SlugField(default=None) 

def get_absolute_url(self): 
    self.slug = slugify(self.name) 
    return reverse('category_detail', args=[str(self.slug)]) 

class Specialization(models.Model): 
    id_S = models.ForeignKey(Category, on_delete=models.CASCADE) 
    name = models.CharField(max_length=100) 
slug = models.SlugField(default=None) 

def __str__(self): 
    return self.name 

def get_absolute_url(self): 
    self.slug = slugify(self.name) 
    return reverse('spec_detail', args=[str(self.slug)]) 

答えて

0

カップルの事 -

  1. あなたはどこにでもget_absolute_urlを呼び出していないので、テンプレートのみのモデルの__unicode__メソッドの戻り値を表示します(Python 2の場合)または__str__のメソッド(Python 3の場合)。
  2. for spec in specを呼び出さないでください。別の変数を使用して、名前空間の汚染や潜在的なエラーがないようにしてください。

    {% for each_spec in spec %} <button type="button" class="list-group-item" data-toggle="tab" href="{{ each_spec.get_absolute_url }}">{{ spec }}</button> {% endfor %}

+0

私はこれを知っているし、それが行われているが、それはNAVピルのハイパーリンクがそれを開くために、そのタブを解決できないことを、私の問題私の問題ではありません –