Search code examples
htmldjangoselected

Django Prepopulate HTML MultieChoice Field


What's the best way to prepopulate a multiple choice select field. In my view, I'm adding the context the values for the field.

def get_context_data(self, *args, **kwargs):
    context = super(UserProfileUpdateView, self).get_context_data(*args, **kwargs)
    context['mystates']=user.states

output

Alaska, Arizona, Alabama,

Hmtl page

<div class="form-group">
    <label for="id_states">Add State 2:</label> <select name="states" id="id_states"  multiple="multiple">
    {% include "accounts/snippets/states_drop_down_options.html" %}
    </select>
</div>

state_drop_down_options.htmlm

  <option value="AL">Alabama</option>    
  <option value="AK">Alaska</option>    
  <option value="AZ">Arizona</option>    
  <option value="AR">Arkansas</option>    
  <option value="CA">California</option>

Solution

  • In each option you can check if that option is in the mystates variable:

      <option value="AL" {% if 'Alabama' in mystates %}selected{% endif%}>Alabama</option>    
      <option value="AK" {% if 'Alaska' in mystates %}selected{% endif%}>Alaska</option>    
      <option value="AZ" {% if 'Arizona' in mystates %}selected{% endif%}>Arizona</option>    
      <option value="AR" {% if 'Arkansas' in mystates %}selected{% endif%}>Arkansas</option>    
      <option value="CA" {% if 'California' in mystates %}selected{% endif%}>California</option>