2017-08-16 37 views
0

モデル:カテゴリをテンプレートに追加するにはどうすればよいですか?

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

    def __unicode__(self): 
     return self.name 

class Post(models.Model): 
    title = models.CharField(max_length = 100) 
    content = models.TextField(max_length = 600, default = 'cool') 
    date_of_creating = models.DateTimeField(auto_now=False, auto_now_add=True) 
    image = models.ImageField(
     upload_to=upload_location, 
     null=True, 
     blank=True, 
     height_field="height_field", 
     width_field="width_field" 
     ) 
    height_field = models.IntegerField(default=0) 
    width_field = models.IntegerField(default=0) 
    category = models.ForeignKey('Category') 
    slug = models.SlugField(unique=True, blank=False) 


    def __unicode__(self): 
     return self.title 

再生回数:

def category(reguest, slug): 
    category = Category.objects.get(slug=slug) 
    post = Post.objects.filter(category=category) 
    html = 'category.html' 
    context = { 
    'category': category, 
    'post': post, 
    } 
    return render(reguest, html, context) 

def listofposts(request): 
    query_set_list = Post.objects.all() 
    context = { 
    "list" : query_set_list, 
    } 
    html = 'base.html' 
    return render(request, html, context) 

私はカテゴリごとに私の記事をフィルタリングするために、テンプレートに書くべきかを知りません。 カテゴリを選択し、このカテゴリの投稿を表示する必要があります。カテゴリ別にどのようにフィルタリングできますか?

答えて

1

あなたの投稿をどのように表示するかをカテゴリごとに尋ねていると思いますか?それはあなたが後にしている何であれば、あなたのテンプレートは次のようになります。あなたはあなたの意見に何をすべきかに基づいて

template.html

{% if category %} 
{% if post %} 
    {% for c in category %} 
     {% for p in post %} 
      {% if p.category == c %} 
       <div>{{ p.title }}</div> <!-- and whatever else you want to display and however you want to style it I am just giving an example --> 
      {% endif %} 
     {% endfor %} 
    {% endfor %} 
{% endif %} 
{% endif %} 

を、これはカテゴリ別に表示するための一つの方法です。データをどのようにトラバースしてグループ化するかについては、より良い方法がありますが、これを尋ねています。だから私はこれがあなたを助けることを願っています

EDIT 1

(私は編集があったと信じて)もう一度あなたの質問を読んだ後、私はあなたが選択したカテゴリの投稿を表示する方法を求めていることがわかりました。私はあなたがslugを持っているので、選択されたカテゴリがURLにあると仮定しています。実際にはビューで正しいpostsを選択しています。だから、あなたは、単にあなたのテンプレートでこれをしなければならない選択categoryからの投稿を表示するために:

{% if post %} 
    {% for p in post %} 
     <div>{{ p.title }}</div> <!-- and whatever else you want to display and however you want to style it I am just giving an example --> 
    {% endfor %} 
{% endif %} 

・ホープ、このことができます!

+0

大変ありがとうございます。それはもっと難しいと思った。 2番目のコードは私を助けました。 Спасибодобрыйчеловек) – question1

+0

@ question1あなたは大歓迎です! –

1

Ajaxを使用してカテゴリ(Tutorial here)でフィルタリングすることができます。

すべてのカテゴリを含む選択ボックスを作成し、新しいオプションが選択されたら、Ajaxクエリをトリガーして、そのカテゴリからすべての投稿を選択します。

+0

有用なリンクありがとう。私はAJAXを試します – question1

+0

@ question1それは私の最後の年のプロジェクトで、非常にそれの存在を知って便利なそれを使用して:) –

関連する問題