MultipleChoiceField with massive choices best practice
I went through the second option:

in the class object the queryset / choices is set to the full list 
in the init it is set to empty

This show nothing in the template (and I add through Ajax) but allow everything in the cleaning
I need have MultipleChoiceField field in a form that should have over 50000 choices, therefore I cannot render it properly; I emptied the choices and went through an Ajax call to filter the options depending on the user inputs. Problem is that Django is obviously complaining that the choice is not part of the empty choices I provided.
I think of three solutions to fix this but would like to know which one is 'best practice' or if there was a better one :

Create a second form which I check when the request is POST, same as the first one but with the choices initialized at the server starts
Define the __init__ of the form where if passed a parameter it would set choices to a variable initialized outside the form at the server starts
Find a way to display the input without displaying the options in the template