2016-04-24 10 views
0

私はここでレンガされています。私は何が起こっているのか分からない?クラスベースのビューでManyToManyFieldを呼び出す方法

私は簡単なブログをしたいです。

私はManyToManyFieldを定義し、カテゴリを多対多フィールドとして設定し、名前の投稿を関連付けることができます。

以前の私は、関数ベースのビューを使用し、私は単純に、このような関連の名前を呼ばれる:

def catdetail(request, slug): 
code here 
and 
posts = category.pots.all() /////and this gave me all posts related to this cateogry, 

しかし、私はこのカテゴリーを呼び出すことはできませんカテゴリの詳細ビューで、クラスベースのビューでポストからのフィールド。私の試行はすべて失敗です。カテゴリが定義されていない、カテゴリーにオブジェクト、カテゴリ、投稿があり、既に知っているものと似たものがあります...

私の質問はどのようにしてカテゴリの詳細ビューで呼び出すことができますか?ここで

は私のモデルとviews.pyです:

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

    def __unicode__(self): 
     return self.title 

    def get_absolute_url(self): 
     return reverse("category_detail", kwargs={"slug": self.slug}) 


class Tag(models.Model): 
    title = models.CharField(max_length=100) 
    slug = models.SlugField(unique=True) 

    def __unicode__(self): 
     return self.title 


class Post(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    category = models.ManyToManyField(Category, related_name='posts') 
    title = models.CharField(max_length=100, blank=False) 
    slug = models.SlugField(unique=True) 
    body = models.TextField() 
    image = models.ImageField(upload_to='project/uploads/') 
    tag = models.ManyToManyField(Tag, related_name='tag_post') 
    date = models.DateTimeField(auto_now_add=True, auto_now=False) 
    date_mod = models.DateTimeField(auto_now=True, auto_now_add=False) 
    publis = models.BooleanField(default=True) 

    def __unicode__(self): 
     return self.title 

    def get_absolute_url(self): 
     return reverse("post_detail", kwargs={"slug": self.slug}) 

とviews.py。

ビューでカテゴリフィールドと関連する名前をここで呼び出す方法を教えてもらえますか?

class CategoryDetail(DetailView): 
    model = Category 
    template_name = "cat_detail.html" 


    def get_context_data(self, *args, **kwargs): 
     context = super(CategoryDetail, self).get_context_data(*args, **kwargs) 
     context['cat'] = get_object_or_404(Category, slug=self.kwargs.get("slug")) 
     return context 
+0

いいえ、私たちは、あなたが話しているエラーを知っていないかどうか、すべての記事を得ました。私たちが助けてくれるようにするには、実際のエラーとそれを引き起こすコードを掲載する必要があります。 –

+0

私はちょうどcategoryDe​​tailビューで関連する名前のcategoryフィールドを呼び出す方法を尋ねています、エラーはCategoryが定義されていません....関連する名前の投稿を含むPostからcategory detail viewフィールドを呼び出す方法がわからないので' –

答えて

0

def get_context_data(self, *args, **kwargs): 
    context = super(CategoryDetail, self).get_context_data(*args, **kwargs) 
    posts = Category.objects.get(id=1).posts.all() 
    for post in posts: 
     post.category 
    print post 
    context['cat'] = get_object_or_404(Category, slug=self.kwargs.get("slug")) 

    return context 

は、私は今、これを持っている、しかし、私はそのカテゴリにあるか、ない

関連する問題