Как заполнить форму значением с текущей страницы? - PullRequest
0 голосов
/ 04 июля 2019

Я учусь создавать приложение Post-comment для Django. Я понимаю, как и почему текущий пользователь может быть назначен автором в форме комментариев. Но я не понимаю, как post_id можно назначить, чтобы связать комментарий с конкретным сообщением.

Пробовал различными способами, полученными при поиске в сети. Я продолжаю получать различные ошибки - TypeError, KeyError, ValueError и т. Д.

Мой models.py настроен так:

class Post(models.Model):
    pid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=1000)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog-home')#, kwargs={'pk':self.pk})


class Comment(models.Model):
    cid = models.AutoField(primary_key=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    comment = models.TextField()
    comment_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.comment


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

    def save(self, *args, **kwargs):
        super(Comment, self).save(*args, **kwargs)

Файл views.py с представлением создания комментария выглядит следующим образом:

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

    def form_valid(self, form,**kwargs):
        form.instance.author = self.request.user
        form.instance.post_id = self.kwargs['post_id']
            # IS THE ABOVE LINE CORRECT?
        return super().form_valid(form)

Кнопка «Ответить» находится на главной странице, включенной в каждый почтовый блок. HTML для того же с URL-адресом для него, как показано ниже:

{% extends "blog/base.html" %}
{% block content%}
	{% for post in posts%}
		<article class="media content-section">
			<img class="rounded-circle article-img" src="{{post.author.profile.image.url}}">
			  <div class="media-body mb-8">
			    <div class="article-metadata mb-4">
			      <a class="mr-4" href="{% url 'user-posts' post.author.username %}">{{ post.author }}</a>
			      <small class="text-muted">{{ post.date_posted|date:"F d, Y P e" }}</small>
			    </div>
			    <h2><a class="article-title" href="{% url 'post-detail' post.pid %}">{{ post.title }}</a></h2>
			    <p class="article-content">{{ post.content }}</p>
			    <div class="border border-top-0">
			    	<a class="btn float-right btn-info mb-0 mt-1" href="{% url 'comment-create' post.pid %}">Answer</a>
            $$$$$ HERE IS THE URL FOR THE ANSWER BUTTON $$$$
			    </div>
			  </div>
	</article>
	{% endfor %}
  {% endblock %}

Я не знаю, как передать post_id или идентификатор сообщения, на которое нажимает пользователь. Пожалуйста, помогите !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...