假设我正在使用Django Site模型:
class Site(models.Model):
name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
我的网站值为(键,值):
1. Stackoverflow
2. Serverfault
3. Superuser
Run Code Online (Sandbox Code Playgroud)
我想构建一个带有以上值的html选择小部件的表单:
<select>
<option value="1">Stackoverflow</option>
<option value="2">Serverfault</option>
<option value="3">Superuser</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我正在考虑从以下代码开始,但它不完整:
class SiteForm(forms.Form):
site = forms.IntegerField(widget=forms.Select())
Run Code Online (Sandbox Code Playgroud)
有关Django表单如何实现这一点的任何想法?
编辑
不同的页面将显示不同的站点值.开发页面将显示开发站点,而烹饪页面将显示配方站点.我基本上想要根据视图动态填充窗口小部件选项.我相信我现在可以通过在模板中手动生成html来实现这一目标.
T. *_*one 12
我没有对此进行测试,但我正在思考......
site = forms.IntegerField(
widget=forms.Select(
choices=Site.objects.all().values_list('id', 'name')
)
)
Run Code Online (Sandbox Code Playgroud)
编辑 -
我只是尝试了这一点,它确实正确地生成了选择.这个choices论点是期待像这样的2元组列表......
(
(1, 'stackoverflow'),
(2, 'superuser'),
(value, name),
)
Run Code Online (Sandbox Code Playgroud)
在.values_list将返回只要你有ID和名称/标题/无论作为,因此精确的格式: .values_list('id', 'name').保存表单时,值.site将是所选站点的id/pk.
| 归档时间: |
|
| 查看次数: |
17857 次 |
| 最近记录: |