@leirons

Начал изучать джанго, возникла проблема, как исправить?

Решил сделать что-то наподобие 2ch, весь план в голове уже выстроился, модели сделал, но вот не могу с кое чем разобраться.
Код будет ниже, вопрос в чем.
У меня есть модель обьект общения, тема для обсуждения и в теме для обсуждения будут посты, к примеру -

Здоровье - Спорт - Посты, у каждой темы есть слаг, который перекидует на шаблон, но я не могу вывести посты конкретного слага, точнее не понимаю как, мне нужно выводить посты только спорта, но из-за того, что я не знаю как передать туда только конкретные посты спорта у меня выводятся все посты в каждой теме.

Модель
from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse


class Subject(models.Model):
    title = models.CharField(max_length=50,verbose_name="Название ",)


    class Meta:
        ordering = ['title']
        verbose_name_plural = 'Обьекы обсуждения'
        verbose_name = 'Обьект обсуждения'

    def __str__(self):
        return self.title

class Theme(models.Model):
    title = models.CharField(max_length=50,verbose_name="Название")
    subject = models.ForeignKey(Subject,on_delete=models.CASCADE,related_name='subject')
    slug = models.SlugField(null=True,verbose_name='ссылка на страницу')

    class Meta:
        ordering = ['title']
        verbose_name_plural = 'Темы'
        verbose_name = 'Тема'

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('article_detail', kwargs={'slug': self.slug})

class Post(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True)
    title = models.CharField(max_length=50,verbose_name="Название")
    text = models.TextField(max_length=500,verbose_name="Текст")
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
    is_published = models.BooleanField(default=True)
    where_we_are = models.ForeignKey(Theme,on_delete=models.CASCADE,related_name='post',null=True,blank=True)


    class Meta:
        ordering = ['created_at']
        verbose_name_plural = 'Посты'
        verbose_name = 'Пост'

    def __str__(self):
        return self.title


class Comments(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='posts')
    name = models.CharField(max_length=50)
    email = models.EmailField()
    body = models.TextField(max_length=500)
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)
    every = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments',null=True,blank=True)

    class Meta:
        ordering = ['created_on']
        verbose_name = 'Комментарий'
        verbose_name_plural = 'Комментарии'


Вьюха
from django.shortcuts import render
from django.views.generic.list import ListView
from django.views.generic import TemplateView
from django.shortcuts import get_object_or_404
from django.views.generic.edit import DeleteView
from .models import *


class base(ListView):
    model = Theme
    context_object_name = 'themes'
    template_name = 'site/base.html'


class MultipleModelView(TemplateView):
    template_name = 'site/provekra.html'

    def get_context_data(self, **kwargs):
         context = super(MultipleModelView, self).get_context_data(**kwargs)
         context['modeltwo'] = Theme.objects.all()
         context['modelone'] = Subject.objects.all()
         return context

class Themes(MultipleModelView):
    template_name = 'site/themes.html'

    def get_context_data(self, **kwargs):
        context = super(MultipleModelView, self).get_context_data(**kwargs)
        context['modeltwo'] = Theme.objects.all()
        context['modelone'] = Subject.objects.all()
        context['modelthree'] = Post.objects.all()
        return context

    def get_queryset(self):
        return self.Theme.objects.filter(productclass__slug=self.kwargs.get('slug'))


маршруты
from django.urls import path
from .views import base,MultipleModelView,Themes
urlpatterns = [
    path('',base.as_view(),name='themes'),
    path('', MultipleModelView.as_view(), name='themes'),
    path('<slug:slug>', Themes.as_view(), name='article_detail'),

]
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы