Создать представление с двумя функциями, чтобы все это было в одном шаблоне?

Мне нужно, чтобы мой шаблон отображал кнопку редактирования после завершения комментария, но я понятия не имею, как я могу и должен это сделать. Должен ли я создать представление или метод в FeedbackView? Обычно я создаю представление для каждого действия, но не придется ли делать отдельный шаблон для каждого представления?

Также, как можно ограничить пользователя только на один комментарий?

# VIEW
class ProductFeedbackView(DetailView):
    model = Product
    template_name = 'store/product_feedback.html'

    def get_context_data(self , **kwargs):
        data = super().get_context_data(**kwargs)

        connected_comments = Comment.objects.filter(product=self.get_object())
        number_of_comments = connected_comments.count()
        data['comments'] = connected_comments
        data['no_of_comments'] = number_of_comments
        data['comment_form'] = CommentForm()

        return data

    def post(self , request , *args , **kwargs):
        if self.request.method == 'POST':
            comment_form = CommentForm(self.request.POST)
            if comment_form.is_valid():
                content = comment_form.cleaned_data['content']
            new_comment = Comment(content=content, author=self.request.user, product=self.get_object())
            new_comment.save()
            return redirect(self.request.path_info)

# FORM
class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['content']

# MODEL
class Comment(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, blank=True, null=True, related_name='comments')
    author = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True,)

    content = models.CharField(max_length=200, null=False, blank=True)
    date = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-date']

# TEMPLATE
{% if user.is_authenticated %}
<form action="" method="POST" id="main_form">
    <div>
        <label for="comment">Type comment</label>
        {{ comment_form }} {% csrf_token %} <input type="submit" value="Post">
    </div>
    </div>
</form>
{% else %}
    <h2>You need to buy the product and login to comment</h2>
{% endif %}

{% for comment in comments %}
    <h3><b>{{ comment.author }} {{ comment.date }}:</b>{{ comment.content }}</h3>
{% endfor %}
Вернуться на верх