带有 selected=selected 的 Django 自定义 ChoiceField 表单
Django custom ChoiceField form with selected=selected
我有以下表格:
POSSIBLE_POSITIONS = (
('1', 'Brazo'),
('2', 'Muñeca'),
('3', 'Pierna'),
('4', 'Pie'),
)
class PositionForm(forms.Form):
position = forms.ChoiceField(choices = POSSIBLE_POSITIONS, label="", initial=1, widget=forms.Select(
attrs={
'class': 'form-control'
}
))
这是使用该位置的模型:
class User(models.Model):
id = models.CharField(max_length=10, primary_key=True)
position = models.CharField(max_length=1, choices=POSSIBLE_POSITIONS, default=1)
这是视图:
def modify(request):
return render(request, 'interface/modify.html', {'user': User.objects.get(pk=id), 'device_list': Device.objects.all(), 'form': PositionForm()})
我想知道,如何select默认的Position
基于当前的user.position
。
就像我在这里做的那样:
<select name="device_id" class="form-control">
{% for device in device_list %}
{% if device.id == user.device.id %}
<option selected="selected">{{ device.id }}</option>
{% else %}
<option>{{ device.id }}</option>
{% endif %}
{% endfor %}
{% if user.device.id == None %}
<option selected="selected"> Sin dispositivo </option>
{% else %}
<option> Sin dispositivo </option>
{% endif %}
</select>
但是我这里不知道怎么操作:
<div class="form-group">
<label>Posición actual dispositivo</label>
{{ form }}
</div>
您可以 select 任何选项,方法是在常规 html 中手动执行此操作
<select name="device_id" class="form-control">
<option value="1"> Brazo</option>
<option value="2"> Muñeca</option>
<option value="3" selected> Pierna</option>
<option value="4"> Pie </option>
</select>
所以你可以在你的选项标签中添加这个 if 语句
`<option {% if user.position %} selected {% endif %}>`
并且 selected 将成为默认值
如果我正确理解你的问题,你应该在你的观点中做以下修改:
def modify(request):
user = User.objects.get(pk=id)
form = PositionForm(initial={'position': user.position})
return render(request, 'interface/modify.html', {'user': user, 'device_list': Device.objects.all(), 'form': form})
我有以下表格:
POSSIBLE_POSITIONS = (
('1', 'Brazo'),
('2', 'Muñeca'),
('3', 'Pierna'),
('4', 'Pie'),
)
class PositionForm(forms.Form):
position = forms.ChoiceField(choices = POSSIBLE_POSITIONS, label="", initial=1, widget=forms.Select(
attrs={
'class': 'form-control'
}
))
这是使用该位置的模型:
class User(models.Model):
id = models.CharField(max_length=10, primary_key=True)
position = models.CharField(max_length=1, choices=POSSIBLE_POSITIONS, default=1)
这是视图:
def modify(request):
return render(request, 'interface/modify.html', {'user': User.objects.get(pk=id), 'device_list': Device.objects.all(), 'form': PositionForm()})
我想知道,如何select默认的Position
基于当前的user.position
。
就像我在这里做的那样:
<select name="device_id" class="form-control">
{% for device in device_list %}
{% if device.id == user.device.id %}
<option selected="selected">{{ device.id }}</option>
{% else %}
<option>{{ device.id }}</option>
{% endif %}
{% endfor %}
{% if user.device.id == None %}
<option selected="selected"> Sin dispositivo </option>
{% else %}
<option> Sin dispositivo </option>
{% endif %}
</select>
但是我这里不知道怎么操作:
<div class="form-group">
<label>Posición actual dispositivo</label>
{{ form }}
</div>
您可以 select 任何选项,方法是在常规 html 中手动执行此操作
<select name="device_id" class="form-control">
<option value="1"> Brazo</option>
<option value="2"> Muñeca</option>
<option value="3" selected> Pierna</option>
<option value="4"> Pie </option>
</select>
所以你可以在你的选项标签中添加这个 if 语句
`<option {% if user.position %} selected {% endif %}>`
并且 selected 将成为默认值
如果我正确理解你的问题,你应该在你的观点中做以下修改:
def modify(request):
user = User.objects.get(pk=id)
form = PositionForm(initial={'position': user.position})
return render(request, 'interface/modify.html', {'user': user, 'device_list': Device.objects.all(), 'form': form})