Django / Назначение значения для form.instance в views.py - PullRequest
1 голос
/ 31 марта 2020

Обратите внимание, что я новичок в Django. Я пытался дать значение для экземпляра «post» формы. Что я хочу сделать, так это связать мой комментарий с конкретной c записью. Я мог бы связать свой комментарий с автором с запросом пользователя, который в настоящее время вошел в систему, но не может установить соответствующий пост. У меня есть два варианта для urls.py:

  1. Первый - установить путь к <int:pk>, что дает ошибку 'int' is not iterable.
  2. , второй - к <pk> который выдает ошибку Cannot resolve keyword '1' into field. Choices are: author, author_id, comments, content, date_posted, id, title
## my views.py

class CommentCreateView(LoginRequiredMixin,CreateView):
    model = Comment
    fields = ['content']

    def form_valid(self,form):
        form.instance.author = self.request.user
        form.instance.post = Post.objects.filter(self.kwargs['pk']).first()
        return super().form_valid(form)
## my models.py

class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User,on_delete=models.CASCADE)  


    def __str__(self):
        return self.content

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk':self.pk})

## my urls.py

path('post/<pk>/comment/', CommentCreateView.as_view(), name="comment-create")

1 Ответ

3 голосов
/ 31 марта 2020

Вы не правильно звоните .filter(), вам нужно передать аргументы ключевого слова.

form.instance.post = Post.objects.get(pk=self.kwargs['pk'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...