天天看點

django1.2中将ManyToManyField呈現為checkbox

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(), 

    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。

本文轉自 virusswb 51CTO部落格,原文連結:http://blog.51cto.com/virusswb/794691,如需轉載請自行聯系原作者