Yeah, I learned that, too. Value is holding the raw input, which is why it is a string. I’m using a form to manage a table with search, filtering, more filtering and pagination, because that’s the only way of passing multiple parameters in a request, without adding dozens of lines of complex code to my view and template. But that also means that I also need the data of invalid form. If the search query does not meet the minimum of 3 chars, I still want the user to go to the next page. Hence why I need the value.
Overall, these kind of scenarios feel extremely complicated to implement, but on the other hand are nothing you don’t see on any other web page as well. I wish Django would provide some proper way of handling more dynamic pages. Ugh