2017-09-24 2 views
0

I'like를 표시 할 수 없습니다, 결과는 2 개 루프를 사용하여 스타일을 다음과 같이해야합니다 : 카테고리 1을 - info_record 1 - info_record 2 구분 2 - info_record 3장고 + HTML 템플릿 news_list의 목록을 대표하는 올바른 방법

문제는 내부 루프 {p_list.p.name %의 m에 대한 %}는 항상 아무 일도 일어나지 않지만 외부 루프 {p %% p의 %}는 올바르게 검색 될 수 있습니다.

HTML 템플릿 파일은, 다음과 같이 나타낸다

{% block content %} 
    <div class = "container"> 
    {% for p in p_category %} 
     <div class = "row" > 
      ......... {{p}} 
      </br> 
     </div> 
     {% for m in p_list.p.name %} 
     <div calss ="row"> 
      .. <a href = "/pubinfo/{{m.slug}}" > {{m.title}} - [  {{m.created}}] </a> 
     </div> 
     {% endfor %} 
    {% endfor %} 
</div> 
{% endblock %} 

뷰 파일은 다음과 같다,

from django.shortcuts import render 
from datetime import datetime 
from .models import Category 
from .models import PostInfo 


def list_all(request): 

post_categories = Category.objects.all() 
post_lists ={} 

for cate in post_categories: 

    post_lists[cate.name] = PostInfo.objects.all().filter(category = cate) 

import pdb; pdb.set_trace() 

return render(request, 'pub_post.html', {'p_category': post_lists.keys(), "p_list": post_lists}) 

모델 파일은 다음과 같다

from django.db import models 
from django.contrib.auth.models import User 

# Create your models here. 

class Category(models.Model): 
    name = models.CharField(max_length=200, 
          db_index=True) 
    slug = models.SlugField(max_length=200, 
          db_index=True, 
          unique=True) 

    class Meta: 
     ordering = ('name',) 
     verbose_name = 'category' 
     verbose_name_plural = 'categories' 
    def __str__(self): 
    return self.name 

class PostInfo(models.Model): 
    title = models.CharField(max_length=200, 
          db_index=True) 
    slug = models.SlugField(max_length=200, 
          db_index=True, 
          unique=True) 
    content = models.TextField(blank=True, 
          null=True) 
    category = models.ForeignKey(Category, 
          related_name='post_category') 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True)  
    created_by = models.ForeignKey(User, related_name='created_by_user') 
    updated_by = models.ForeignKey(User, related_name='updated_by_user') 


    class Meta: 
     ordering = ('updated',) 
     # verbose_name = 'post' 
     # verbose_name_plural = 'posts' 
    def __str__(self): 
     return self.title 

아무도 내게 네 손을 줄 수 있다면 감사, 다시 한번 고마워.

답변

0

그 이유는 입니다. p_list은 사전입니다. 방금이와 함께 전체 템플릿을 대체 할 수

 {% for key, value in p_list.items %} 
    {% if key == p %} 
    {% for m in value %} 
    <div calss ="row"> 
     .. <a href = "/pubinfo/{{m.slug}}" > {{m.title}} - [  {{m.created}}] </a> 
    </div> 
    {% endfor %} 
    {% endif %} 
    {% endfor %} 

.items이 (키, 값) 쌍

업데이트 목록에 사전을 변환하고 상황을 피하기 :

이 시도 변수 p_category

{% block content %} 
    <div class = "container"> 
    {% for p, values in p_list.items %} 
    <div class = "row" > 
     ......... {{p}} 
     </br> 
    </div> 
    {% for m in values %} 
    <div calss ="row"> 
     .. <a href = "/pubinfo/{{m.slug}}" > {{m.title}} - [  {{m.created}}] </a> 
    </div> 
    {% endfor %} 
    {% endfor %} 
    </div> 
    {% endblock %}