1

我有一个自定义字段,它是 ModelMultipleChoiceField 的子类。我提供了通过 queryset 参数显示的选项。此查询集排除某些值。我的问题出现在某些工作流的清理操作期间,我需要选择一个最初通过查询集方式排除的选项。当我尝试保存这个值时,django 拒绝保存它说它不是一个有效的选项。在查找 ModelMultipleChoiceField 的 clean 方法时,我发现它检查提供的“值”是否来自初始查询集中,这导致了我的困境。

我想知道是否有可能在没有任何重大黑客攻击的情况下绕过这个问题。

4

1 回答 1

2

django/forms/models.py:1011有这个:

qs = self.queryset.filter(**{'%s__in' % key: value})

因此,如果您在调用之前覆盖自定义字段的 clean() 方法以根据需要修改 self.queryset super(MyField, self).clean(value),则可以相对干净地处理这种边缘情况。

于 2011-07-08T22:46:37.407 回答