我对 Django 中 curry 函数的使用有疑问。我已经成功地使用它来构建一个带有自定义表单的内联模型表单集,因此:
person_obj, formed = Mother.objects.get_or_create(user=request.user)
FormSetClass = inlineformset_factory(Mother, Relation, form=RelationForm, extra=1)
FormSetClass.form = staticmethod(curry(RelationForm, person=person_obj))
这使我能够在表单 init 方法中将人员传递给 kwargs,以过滤查询集:
class RelationForm(ModelForm):
def __init__(self, *args, **kwargs):
person = kwargs.pop('person')
qs = Relation.objects.filter(person=person)
self.fields['my-field'].queryset = qs
我的问题是我不知道它是如何工作的——我找不到任何关于它的文档,而且源代码并没有真正为我提供任何启示。谁能解释这是如何工作的,并给出咖喱的一些好的用例,除了这个吗?