Не могу сделать связку комментариев в Django?

Здравствуйте.
Не получается правильно связать комментарии к постам. Сейчас получается, что комментарий к одной новости отображается на всех других новостях. Нужно чтоб был каждый коммент к своей новости.
модель:
class Comments(models.Model):
    class Meta():
        db_table = 'comments'
        verbose_name = 'Комментарий'
        verbose_name_plural = 'Комментарии'

    comments_text = models.TextField(verbose_name='Текст комментария')
    comments_blogpost = models.ForeignKey(BlogPost)

вьюха: вывод всех новостей и фильтр комментов
def full_slug(reguest, slug):
    comment_form = CommentForm
    form = comment_form
    comments = Comments.objects.filter()
    te = get_object_or_404(BlogPost, slug=slug)
    return render(reguest, 'full.html', {'te': te, 'form': form, 'comments': comments, 'username': auth.get_user(reguest).username})

вьюха: Добавления комментов
def addcomment(reguest, one_id):
    if reguest.POST and ('pause' not in reguest.session):
        form = CommentForm(reguest.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.comments_blogpost = BlogPost.objects.get(id=one_id)
            form.save() # Сохраняем
            return_path = reguest.META.get('HTTP_REFERER','/')
            reguest.session.set_expiry(10) .
            reguest.session['pause'] = True 
    return redirect(return_path)

урлы:
url(r'^(?P<slug>[-\w]+)/$', views.full_slug, name='full_slug'), # Вывод новостей
url(r'^addcomment/(?P<one_id>\d+)/$', views.addcomment), # Добавление коммента

В общем во вьюхе не могу прописать фильтр в этой строке comments = Comments.objects.filter() , чтоб коммент был закреплен к нужной новости. Сейчас получается, что во всех новостях выходят все комменты.
Пробовал так:
comments = Comments.objects.filter(comments_blogpost_id=slug), но получаю ошибку. Вывод должен быть только по id, типа такого
comments = Comments.objects.filter(comments_blogpost_id=one_id)
Но если использовать параметр one_id вместо slug, то будут ссылки в новостях типа такого full/22 т.е. не человекопонятный урл.

Подскажите где ошибка у меня? Я только изучаю джанго и возможно наделал кучу ошибок и запутался.
  • Вопрос задан
  • 459 просмотров
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
Если говорить о вьюхе вывода, то сначала надо получать саму "блогозапись", а потом уже по ней фильтровать комментарии, т.е. просто поменять местами 2 строки и дописать фильтр:
def full_slug(reguest, slug):
    comment_form = CommentForm
    form = comment_form
    te = get_object_or_404(BlogPost, slug=slug)
    comments = Comments.objects.filter(comments_blogpost=te)
    return render(reguest, 'full.html', {'te': te, 'form': form, 'comments': comments, 'username': auth.get_user(reguest).username})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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