2

I have 4 categories on my site. How can I write one class PageViews(ListView) for four same pages with different posts. And same question, how to write class DeteilViews(DetailView) for each posts? My models below.

class Category(models.Model):
    category = models.CharField(max_length=50)
    slug = models.CharField(max_length=60, unique=True)

class Topic(models.Model):
    topic = models.CharField(max_length=50)
    slug = models.CharField(max_length=60, unique=True)
    category = models.ManyToManyField(Category)

class Page(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)

    datetime = models.DateTimeField()
    title = models.CharField(max_length=60)
    slug = models.CharField(max_length=250, unique=True)
    short_text = models.CharField(max_length=255)
    text = models.TextField()
    image = models.ImageField(upload_to='media/news_img')

    img_source = models.CharField(max_length=255)
    page_source = models.CharField(max_length=60)

    parsing_date = models.DateTimeField(auto_now=True)

    objects = models.Manager()


    def get_absolute_url(self):
        return reverse('news:detail', args=[self.category.slug, self.topic.slug, self.slug])


class Comment(models.Model):
    page = models.ForeignKey(Page, on_delete=models.CASCADE)
    comment = models.TextField()
    author = models.CharField(max_length=55)
    datetime = models.DateTimeField()

I tried write, but failed... For example:

class DetailView(DetailView):
    template_name = 'post.html'
    model = Page

    def guery_set(self):
        return self.request.GET.get('slug')
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['posts'] = Page.objects.filter(slug=slug)
        return context

And:

class PageView(ListView, SingleObjectMixin):
    template_name = 'page_body.html'
    paginate_by = 8

    def get(self, request, *args, **kwargs):
        self.object = self.get_object(
            queryset=Category.objects.all())
        return super().get(request, *args, **kwargs)

    def get_queryset(self):
        return Page.objects.filter(category=self.object)

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        pages = ????
        context['posts'] = pages[:8]
        return context
Dharman
  • 30,962
  • 25
  • 85
  • 135
Alexxx
  • 49
  • 3

0 Answers0