Django - доступ к pk / id модуля Post, который находится внутри модели Comment - PullRequest
0 голосов
/ 26 марта 2020

Итак, у меня есть этот почтовый модуль:

class Post(models.Model):
    title = models.CharField(max_length=50)
    content = models.TextField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    date_pub = models.DateTimeField(timezone.now)


    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog-home')

и этот модуль комментариев:

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    comment_author = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField(max_length=255)

    def get_absolute_url(self):
        return reverse('blog-home')

, и это мой взгляд на комментарий:

class CreateComment(LoginRequiredMixin, CreateView):
    model = Comment
    template_name = 'my_blog/create_post.html'
    fields = ['content']

    def form_valid(self, form):
        form.instance.comment_author = self.request.user
        # form.instance.post_id =
        return super().form_valid(form)

Что касается URL:

/ post / 1 ===> будет номер поста 1

/ post / 1 / comment ===> это форма для размещения нового комментария

Я хочу, чтобы form.instance.post_id был идентификатором записи, к которой относится комментарий.

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 26 марта 2020
form.instance.post_id = self.kwargs['pk']

было то, что я искал

0 голосов
/ 26 марта 2020

Я предполагаю, что у вас есть шаблон URL, похожий на этот:

path('post/<int:pk>/comment', CreateComment.as_view(), name='create_comment')

Вот что я хотел бы сделать (при условии, что SingleObjectMixin работает в сочетании с CreateView):

from django.views.generic.detail import SingleObjectMixin

class CreateComment(LoginRequiredMixin, CreateView, SingleObjectMixin):
    model = Comment
    template_name = 'my_blog/create_post.html'
    fields = ['content']

    def form_valid(self, form):
        form.instance.comment_author = self.request.user
        form.instance.post = self.get_object()
        return super().form_valid(form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...