0

ブログにカテゴリを追加しようとしています。以下のようなモデル クラスがあります。何か問題があれば教えてください。ユーザーがカテゴリをクリックしたときに投稿を表示するにはどうすればよいですか。前もって感謝します。

モデル.py

class Posts(models.Model):   
    category=models.ForeignKey('indianapp.Category')
    slug = models.SlugField(max_length=100, unique=True)    

    def get_absolute_url(self):
        return ('blog_post_detail', (),{'slug':self.slug,})

    def save(self,*args, **kwargs):
        if not self.slug:
            self.slug=sluggify(self.title)
        super(Posts,self).save(*args,**kwargs)

class Category(models.Model):
    title = models.CharField(max_length=100, db_index=True)
    slug = models.SlugField(max_length=100, db_index=True)
    def __unicode__(self):
        return '%s' % self.title

    @permalink
    def get_absolute_url(self):
        return ('view_by_category', None, { 'slug': self.slug })

Views.py

def view_category(request,slug):
   catego=get_object_or_404(Category,slug=slug)
   category=Category.objects.all()
   posts = Posts.objects.all()
   category_posts = []
   for post in posts:
     if post.category.filter(Posts,slug=slug):
        category_posts.append(post)
   category = Category.objects.filter(slug=slug)
   pagedata.update({'post_list': category_posts})
   return render_to_response('listpage.html',pagedata)

Urls.py

url(r'^blog/category/(?P<slug>[^\.]+)','indianapp.views.view_category',name='view_by_category'),

View_category.html

{% block title %}{{ category.title }}{% endblock %}

{% block content %}
{% if post_list %}
    <ul>
    {% for post in post_list %}
        <li><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>There are no posts.</p>
{% endif %}
{% endblock %}
4

1 に答える 1

1

必要なものは次のとおりです。

category_posts = category.posts_set.all()

また

category_posts = Posts.objects.filter(category=category)

Django チュートリアルを読むことをお勧めします。

于 2013-01-17T14:48:48.373 に答える