2012-05-20 20 views
0

我已经实现了ManyToMany关系,该关系允许重复项目,如Way to allow for duplicate many-to-many entries in Python/Django。我也有一个表单,它为此关系使用ModelMultipleChoiceField,为了验证来自ajax请求的数据,但在形式为is_valid()调用后,ModelMultipleChoiceField中的任何重复项都被删除。有没有办法保留重复项目(我对表单不感兴趣,因为我没有在网页中使用它),还是必须在表单验证之后手动检查request.POST数据?如何在ModelMultipleChoiceField中允许重复的值

回答

0

ModelMultipleChoiceField在它内部使用一个查询集,所以每个项目只出现一次(只要你在数据库查询中不使用join的数据库查询,但它对这个问题仍然没有任何问题)。您可以尝试使用简单的MultipleChoiceField和构造choices手动复制必要的值。

+0

我考虑过使用MultipleChoiceField,但我不知道哪些值将被多次使用。即使我事先知道这些值,也必须有超过5000个选择,这听起来不像每次发出请求时从数据库中取出它们的好主意。 – konikos

+0

但是,当您构建表单时,您已经发布了数据,因此您可以过滤所有对象并构建仅包含所需数据的选择。有点愚蠢,但它应该工作:) – ilvar