【问题标题】:Django Prepopulate HTML MultieChoice FieldDjango 预填充 HTML MultieChoice 字段
【发布时间】:2018-05-01 03:00:46
【问题描述】:

预填充多选选择字段的最佳方法是什么。在我看来,我正在为该字段的值添加上下文。

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

输出

Alaska, Arizona, Alabama,

Hmtl 页面

<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>

【问题讨论】:

标签: html django selected


【解决方案1】:

在每个选项中,您可以检查该选项是否在 mystates 变量中:

  <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>

【讨论】:

    【解决方案2】:

    根据您的项目,您可以按照自己的想法更好地实现目标。

    第一Django.forms.ModelMultipleChoiceFieldDjango.forms.MultipleChoiceField

    第二:@Nazkter 的The answer 是一个不错的,

    第三

    html
    (我在select 中添加了一个states 属性,其中包含{{ states }} 的值)

    <select name="states" states="{{ states }}" id="id_states"  multiple="multiple">
        {% include "accounts/snippets/states_drop_down_options.html" %}
    </select>
    

    javascript

    [].forEach.call(document.querySelectorAll('#id_states option')  , function(elm){
        var states = document.querySelector('#id_states').getAttribute("states").replace(/\s/g,'').split(",");
        if(states.indexOf(elm.innerText) > -1){
            elm.selected = true;
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 2022-11-04
      • 2011-01-06
      • 2010-10-06
      相关资源
      最近更新 更多