【问题标题】:Django Passing Custom Form Parameters to modelformset_factoryDjango 将自定义表单参数传递给 modelformset_factory
【发布时间】:2014-08-23 08:55:51
【问题描述】:

基于this 关于formset_factory 的回答,我尝试为modelformset_factory 做同样的事情:

from django.utils.functional import curry
from functools wraps

AccountMemberFormSetBase = modelformset_factory(AccountMember,
                                                form=wraps(AccountMemberLimitedModelForm)(curry(AccountMemberLimitedModelForm, affiliate="test")),
                                                extra=2)

这会引发以下错误:

function() argument 1 must be code, not str
Exception Location: ../django/forms/models.py in modelform_factory, line 528

知道这里有什么问题吗?

【问题讨论】:

  • 你能显示完整的回溯吗?另外,您使用的是什么 django 版本?
  • Django 1.6 - 将很快发布完整的回溯
  • 这里是完整的回溯:pastebin.com/htt0ANFi

标签: python django forms formset


【解决方案1】:
class AccountMemberLimitedModelForm(forms.Form):
...     def __init__(self, *args, **kwargs):
...         affiliate = kwargs.pop('affiliate')
...         super(AccountMemberLimitedModelForm, self).__init__(*args, **kwargs)



AccountMemberFormSetBase = formset_factory(AccountMemberLimitedModelForm)
    formset = AccountMemberFormSetBase(form_kwargs={'affiliate': "test"})

【讨论】:

  • 如果您发布的不仅仅是一些代码,那就太好了。或许您可以解释一下为什么该代码有效?
  • with kwargs.pop('affiliate') 我将外部变量添加到表单中。必须在调用 super(AccountMemberLimitedModelForm, self).__init__(*args, **kwargs) 之前完成。当我使用 form_kwargs 字典将变量从表单集传递给表单时
【解决方案2】:

我今天发现自己处于同样的境地。

有关详细信息和解决方法,请参阅我在Django Passing Custom Form Parameters to Formset 中的评论(我希望可以接受指向 StackOverflow 本身的链接)。

【讨论】:

    猜你喜欢
    • 2010-11-15
    • 2010-10-12
    • 2023-03-20
    • 2023-03-19
    • 2023-03-24
    • 2016-12-13
    • 2020-04-13
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多