@@ -37,8 +37,10 @@ class QuerySetSelectField(SelectFieldBase):
3737 """
3838 widget = widgets .Select ()
3939
40- def __init__ (self , label = u'' , validators = None , queryset = None , label_attr = '' ,
41- allow_blank = False , blank_text = u'---' , ** kwargs ):
40+ def __init__ (self , label = u'' , validators = None , queryset = None ,
41+ label_attr = '' , allow_blank = False , blank_text = u'---' ,
42+ ** kwargs ):
43+
4244 super (QuerySetSelectField , self ).__init__ (label , validators , ** kwargs )
4345 self .label_attr = label_attr
4446 self .allow_blank = allow_blank
@@ -71,8 +73,7 @@ def process_formdata(self, valuelist):
7173 return
7274
7375 try :
74- # clone() because of https://github.com/MongoEngine/mongoengine/issues/56
75- obj = self .queryset .clone ().get (pk = valuelist [0 ])
76+ obj = self .queryset .get (pk = valuelist [0 ])
7677 self .data = obj
7778 except DoesNotExist :
7879 self .data = None
@@ -90,11 +91,16 @@ class QuerySetSelectMultipleField(QuerySetSelectField):
9091
9192 widget = widgets .Select (multiple = True )
9293
93- def __init__ (self , label = u'' , validators = None , queryset = None , label_attr = '' ,
94- allow_blank = False , blank_text = u'---' , ** kwargs ):
95- super (QuerySetSelectMultipleField , self ).__init__ (label , validators , queryset , label_attr , allow_blank , blank_text , ** kwargs )
94+ def __init__ (self , label = u'' , validators = None , queryset = None ,
95+ label_attr = '' , allow_blank = False , blank_text = u'---' ,
96+ ** kwargs ):
97+
98+ super (QuerySetSelectMultipleField , self ).__init__ (
99+ label , validators , queryset , label_attr , allow_blank , blank_text ,
100+ ** kwargs )
96101
97102 def process_formdata (self , valuelist ):
103+
98104 if valuelist :
99105 if valuelist [0 ] == '__None' :
100106 self .data = None
@@ -104,10 +110,14 @@ def process_formdata(self, valuelist):
104110 return
105111
106112 self .queryset .rewind ()
107- self .data = [ obj for obj in self .queryset if str ( obj . id ) in valuelist ]
113+ self .data = list ( self .queryset ( pk__in = valuelist ))
108114 if not len (self .data ):
109115 self .data = None
110116
117+ # If no value passed, empty the list
118+ else :
119+ self .data = None
120+
111121 def _is_selected (self , item ):
112122 return item in self .data if self .data else False
113123
0 commit comments