django 的一对多栏目,怎么在 modelform 里设置默认选项。如下图

2019-12-27 19:53:17 +08:00
 python30
上面图片是 html 代码里 下面是外凤 怎么样让里面的 ------- 改成: 请选择一个默认栏目 ?

下面是在 forms.ModelForm 里的设置不起作用。

category = forms.ModelChoiceField(queryset=Category.objects.all(), widget=forms.Select(), initial={'headline': '请选择一个默认栏目'})

在 forms.ModelForm 里 init 里 设置 self.initial['category'] = ['1'] 只对显示已有的栏目。 不知怎么让 ------- 显示 请选择一个默认栏目 难道要用前端 js?

document.getElementById("id_category").innerHTML="请选择一个栏目";

document.getElementById("id_category").value ="请选择一个栏目";

好像都不行。请各位朋友帮忙看看? 谢谢。

3211 次点击
所在节点    Python
4 条回复
lenqu
2019-12-27 20:01:39 +08:00
在 option 加属性 selected = "selected" 试一下
python30
2019-12-27 22:29:05 +08:00
@lenqu
我是用的 {{form.category}} 输出的

这样 怎么给 option 加属性 selected = "selected"?
lenqu
2019-12-28 11:50:36 +08:00
class CommentForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['name'].widget.attrs.update({'class': 'special'})
self.fields['comment'].widget.attrs.update(size='40')

或者

>>> from django import forms
>>> name = forms.TextInput(attrs={'size': 10, 'title': 'Your name'})
>>> name.render('name', 'A name')
'<input title="Your name" type="text" name="name" value="A name" size="10">'
python30
2019-12-28 12:34:17 +08:00
@lenqu
多谢。用你的第二个方法可以成功
不过我用的
js 前端解决了
document.querySelector("option")
获得页面上第一个 option 的元素
然后用 js 写上就 OK 了

谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/632990

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX