您的位置:首页 > 编程语言 > Go语言

django1.2中将ManyToManyField呈现为checkbox

2012-03-02 19:30 567 查看
ManyToMany(一对多)关系,默认在呈现的时候是一个列表框,是可以多选则,需要使用按住ctrl或者shift键,然后点击鼠标才可以实现多选。

但是通常,这种多选应该使用checkbox来呈现,才好让大家理解和选择,否则大家可能不知道是可以多选的。

通过下面的代码就可以实现。

class BlogForm(forms.ModelForm):
prepopulated_fields={'slug':("title")}

categories = forms.ModelMultipleChoiceField(
queryset=Category.objects.all(),
widget=forms.CheckboxSelectMultiple())
tags=forms.ModelMultipleChoiceField(
queryset=Tag.objects.all(),
widget=forms.CheckboxSelectMultiple())

class Meta:
model=Blog
exclude=["author"]

请注意上面代码中红色部分。

在django的form中有四个概念:

1. Widget,对应于html中的一个表单元素,例如<input type="text">或者是<textarea>,负责将widget呈现为html元素。

2. Field,负责验证表单元素的内容是否符合某种规则。

3. Form,是一个field的集合,知道如何验证和如何呈现表单元素。

4. Form Media,呈现Form元素所需要的css和javascript。

多选框正是使用了widget,将ManyToMany呈现为checkbox。

利用Media可以做很多的效果,例如slug字段的自动填充,后面会为大家放出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息