在Django forms.ModelChoiceField中,如何限制显示的选项,但在清理过程中设置一个限制值

在Django forms.ModelChoiceField中,如何限制显示的选项,但在清理过程中设置一个限制值,django,field,choicefield,limit-choices-to,Django,Field,Choicefield,Limit Choices To,我有一个自定义字段,它是modelmultipechoicefield的子类。我通过queryset参数提供要显示的选项。此查询集排除某些值。在对某些工作流执行清理操作期间,我需要选择一个最初通过queryset排除的选项,这就出现了我的问题。当我试图保存这个值时,django拒绝保存它,说它不是一个有效的选项。在查找modelmultipechoicefield的clean方法时,我发现它检查提供的“值”是否来自初始查询集,这导致了我的困境 我想知道是否有可能在没有任何重大黑客攻击的情况下绕过

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

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

有以下内容:

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

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

我觉得该字段完全按照您的要求进行操作。对,但在一种边缘情况下,我需要确保至少保存了一些值,这恰好是以前排除的选项值。太棒了。正是我想要的。谢谢