django1.2中将ManyToManyField呈现为checkbox
2012-03-02 19:30
567 查看
ManyToMany(一对多)关系,默认在呈现的时候是一个列表框,是可以多选则,需要使用按住ctrl或者shift键,然后点击鼠标才可以实现多选。
但是通常,这种多选应该使用checkbox来呈现,才好让大家理解和选择,否则大家可能不知道是可以多选的。
通过下面的代码就可以实现。
请注意上面代码中红色部分。
在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字段的自动填充,后面会为大家放出来。
但是通常,这种多选应该使用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字段的自动填充,后面会为大家放出来。
相关文章推荐
- 理解django的多对多ManyToManyField
- (Django) How do I set limit_choices_to another class from where the ManyToManyField points to? - django, django-models - TechQues.com
- Django 多表关联 存储 使用方法 ManyToManyField save
- Django-ORM多对多查询 (自定义第三张表&ManyToManyField)
- django模型中manytomanyfield的含义
- Django文档——Model中的ForeignKey,ManyToManyField与OneToOneField - 再见紫罗兰
- django的ManyToManyField
- Django:ManyToManyField
- Django-Model中的ForeignKey,ManyToManyField与OneToOneField
- django 中的ManytomanyField的应用
- Django的ManyToManyField(多对多)的使用以及through的作用
- django——ManyToManyField的使用方法
- Django文档——Model中的ForeignKey,ManyToManyField与OneToOneField数据互相读取
- Django Admin ManyToManyField - Stack Overflow
- django 模型 ForeignKey、ManyToManyField
- 【Django基础入门】ManyToManyField跨越中间表查询
- Django后台ManyToManyField显示成Object
- Django ManyToManyField 跨越中间表查询
- Django文档——Model中的ForeignKey,ManyToManyField与OneToOneField
- django中manytomanyfield 因为verbose_name导致filter_horizontal不显示的问题。