¿Cómo se genera un formulario personalizado en Django?

En una de las páginas de plantillas de mi aplicación Django, la página solicita al usuario que seleccione las opciones que desea, desde una lista de casillas de verificación.

El problema es que hay diferentes opciones para diferentes usuarios (por ejemplo, según sus intereses pasados, hay diferentes opciones).

¿Cómo genera formularios Django con los campos CheckboxSelectMultiple() que generan opciones personalizadas para cada usuario?

En forms.py, debe anular el método __init__ y establecer allí las opciones pasadas desde la vista cuando llama a la clase de formulario.

Aquí hay un ejemplo:

 class UserOptionsForm(forms.Form): user_personal_options = forms.ChoiceField(choices=(), widget=forms.CheckboxSelectMultiple) def __init__(self, *args, **kwargs): choices = kwargs.pop('choices', None) # return the choices or None super(UserOptionsForm, self).__init__(*args, **kwargs) if choices is not None: self.fields['user_personal_options'].choices = choices 

Así que en su opinión:

 def user_options(request, user_id): if request.method == 'POST': form = UserOptionsForm(request.POST) if form.is_valid(): # proccess form data here form.save() else: # render the form with user personal choices user_choices = [] # do shometing here to make the choices dict by user_id form = UserOptionsForm(choices=user_choices)