加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django使用curry来构建具有自定义表单的表单集

发布时间:2020-12-20 13:36:23 所属栏目:Python 来源:网络整理
导读:我有一个关于在Django中使用curry函数的问题.我已成功使用它来构建带有自定义Form的inlinemodelformset: person_obj,formed = Mother.objects.get_or_create(user=request.user)FormSetClass = inlineformset_factory(Mother,Relation,form=RelationForm,ex
我有一个关于在Django中使用curry函数的问题.我已成功使用它来构建带有自定义Form的inlinemodelformset:

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

我的问题是,我不知道它是如何工作的 – 我找不到任何关于它的文档,源代码并没有真正为我提供任何信息.任何人都可以解释这是如何工作的,并提供一些咖喱的好用例,除了这个?

解决方法

在Pro Django书中有一个很好的例子,说明咖喱是如何运作的.

简单地说,它允许您使用预定义的参数执行函数并将其另存为新函数,以便稍后仅使用所需的参数.所有这些都没有运行该功能.

对于上面的情况,curry是一个巨大的帮助,因为我们不需要实例化RelationForm只是为了传递person参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读