gpt4 book ai didi

python - Django ModelChoiceField optgroup 标签

转载 作者:IT老高 更新时间:2023-10-28 21:53:16 27 4
gpt4 key购买 nike

如何在ModelChoiceField optgroup标签中设置?

这是一个例子:

models.py

class Link(models.Model):
config = models.ForeignKey(Config)
name = models.URLField(u'Name', null=True, max_length=50)
gateway = models.IPAddressField(u'Gateway', null=True)
weight = models.IntegerField(u'Weight', null=True)
description = models.TextField(u'Description', blank=True)

def __unicode__(self):
return self.name

forms.py

class LinkForm(ModelForm):
config = ModelChoiceField(queryset=Config.objects.all(), empty_label="Choose a link",widget=GroupedSelect())

class Meta:
model = Link

我想像这样呈现我的 ChoiceField:

example.html

<select id="id_config" name="config">
<option selected="selected" value="">Choose a link</option>
<optgroup label="Configuration" >
<option value="8">Address: 192.168.1.202/255.255.255.0 </option>
<option value="9">Address: 192.168.1.240/255.255.255.0 </option>
<option value="10">Address: 192.168.3.1/255.255.255.0 </option>
</optgroup>
</select>

**更新**

我这样解决了我的问题:

class GroupedSelect(Select):
def render(self, name, value, attrs=None, choices=()):
if value is None: value = ''
final_attrs = self.build_attrs(attrs, name=name)
output = [format_html('<select{0}>', flatatt(final_attrs))]
for index, option_gp in enumerate(self.choices):
if index == 0:
option_value = smart_unicode(option_gp[0])
option_label = smart_unicode(option_gp[1])
output.append(u'<option value="%s">%s</option>' % (escape(option_value), escape(option_label)))
output.append('<optgroup label = "Configuration">')
elif index!=0 and index <= len(self.choices):
option_value = smart_unicode(option_gp[0])
option_label = smart_unicode(option_gp[1])
output.append(u'<option value="%s">%s</option>' % (escape(option_value), escape(option_label)))
output.append(u'</optgroup>')
output.append(u'</select>')
return mark_safe('\n'.join(output))

最佳答案

您不需要创建任何自定义字段,Django 已经完成了这项工作,只需传递格式正确的选项:

MEDIA_CHOICES = (
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
)

关于python - Django ModelChoiceField optgroup 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com