class MyModel(models.Model) :
people = models.ManyToManyField(User,related_name='people')
...
class MyForm(ModelForm) :
class Meta :
model = MyModel
widgets = {'people':TextInput(),}
def clean_people(self) :
# turn a comma-separated list of names into a Python list
return [name0,name1,...]
def clean(self) :
# if no other errors, turn list of names into list of Users
field.clean が呼び出される前に clean_people が呼び出されないため、これは機能しません。ここで、field は ModelMultipleChoiceField のインスタンスであり、Python のリストまたはタプルをチェックして ValidationError を発生させ、clean_people をスキップします。呼び出しの順序がこのようになっている理由はありますか? また、この問題を回避するための標準的な規定はありますか? MyForm の各インスタンスで field.clean を lambda x:x に設定することもできましたが、これは非常に見苦しく思えます。MyForm の people フィールドを CharField として明示的に定義するのはおそらく正しいことでしょうか?