title: form.is_valid() always returns False and form is not valid
body: <p>i have a simple form for adding comments and in views i am checking it for validity. But it always returns False and i get error404 according to my code. I have several assumption, but it didn`t work. And now i have no idea how to get the reason
  views.py:</p>
  <pre><code>class ProductDetailView(DetailView):
      model = Product
      template_name = &quot;core/product.html&quot;
      context_object_name = &quot;product&quot;
      ....
  
      def post(self, request, *args, **kwargs):
          if request.POST.get(&quot;product_detail_form&quot;) == 'add_comment_form_two':
              if self.request.user.is_authenticated:
                  form = CommentForm(request.POST)
                  if form.is_valid():
                      comment = Review(review=request.POST.get(&quot;review&quot;),
                                       rating=request.POST.get(&quot;rating&quot;),
                                       author=self.request.user,
                                       product_connected=self.get_object())
  
                      comment.save()
                      print(&quot;success &quot;)
                      return redirect(&quot;product_detail&quot;, *args, **kwargs)
                  else:
                      print(&quot;error&quot;)
                      raise Http404    
                      ....
  
  </code></pre>
  <p>html form</p>
  <pre><code>&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
      {% csrf_token %}
      {{ comment_form.as_p }}
      &lt;input type=&quot;submit&quot; name=&quot;product_detail_form&quot; 
             value=&quot;add_comment_form_two&quot;&gt;add comment&lt;/input&gt;
  &lt;/form&gt;
  </code></pre>
  <p>forms.py</p>
  <pre><code>class CommentForm(forms.ModelForm):
      review = forms.CharField(
          required=True,
          widget=forms.TextInput(
              attrs={&quot;class&quot;: &quot;comment_form&quot;, &quot;placeholder&quot;: &quot;Comment&quot;}), label=&quot;&quot;
      )
      OPTIONS = (
          (&quot;1&quot;, &quot;1&quot;),
          (&quot;2&quot;, &quot;2&quot;),
          (&quot;3&quot;, &quot;3&quot;),
          (&quot;4&quot;, &quot;4&quot;),
          (&quot;5&quot;, &quot;5&quot;),
      )
      rating = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                         choices=OPTIONS)
      class Meta:
          model = Review
          fields = [&quot;review&quot;, &quot;rating&quot;]
  </code></pre>
  <p>model</p>
  <pre><code>class Review(models.Model):
      review = models.TextField(max_length=500)
      author = models.ForeignKey(User, on_delete=models.CASCADE)
      product_connected = models.ForeignKey(Product, on_delete=models.CASCADE, 
                                           related_name=&quot;reviews&quot;)
      creation_date = models.DateTimeField(auto_now_add=True)
      last_update_time = models.DateTimeField(auto_now=True)
      rating = models.IntegerField(default=0, validators=[MinValueValidator(0), 
                                   MaxValueValidator(5)]) 
  </code></pre>
  <p>Thanks for any help, I just can't understand it for a long time.</p>
  <p>stupid rule that I have to write less code than question because my question is two sentences</p>