Добавление в формы в подробном представлении Django - PullRequest
0 голосов
/ 14 декабря 2018

Итак, у меня есть модель fie, файл forms.py и файл views.py.Файл представлений возвращает подробный вид публикации, теперь я хочу добавить модель формы комментариев в подробный вид, чтобы я мог получить к ней доступ в шаблоне d как {{form}}.Я могу сделать это с помощью представлений на основе функций, но мне сложно делать это с представлениями на основе классов.Вот код.

#models.py
from django.db import models
from django.contrib.auth.models import User


class Post(models.Model):
    title = models.CharField(max_length=50)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    date_posted = models.DateTimeField(default=timezone.now)
    likes = models.ManyToManyField(User, blank=True, related_name='post_likes')
    image = models.ImageField(null=False, blank=False, upload_to='post_images')
    slug = models.SlugField(unique=True)



class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    text = models.CharField(max_length=150)
    date_commented = models.DateTimeField(auto_now_add=True)
    comment_by = models.ForeignKey(User, on_delete=models.CASCADE)


#forms.py
from django import forms
from users.models import Profile
from Post.models import Comment


class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['text', ]



#views.py
from django.views.generic import ListView, DetailView

class PostDetail(DetailView):
    model = Post
    template_name = 'Post/blog-detail.html'

Надеюсь, мой вопрос имеет смысл Спасибо.

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете сделать это, например:

class PostDetail(DetailView):
    model = Post
    template_name = 'Post/blog-detail.html'
    def get_context_data(self, **kwargs):
        context = super(PostDetail, self).get_context_data(**kwargs)
        context['comment_form'] = CommentForm()
        return context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...