行内表单集 - 如何为子表单设置默认值

1 投票
1 回答
1134 浏览
提问于 2025-04-17 20:24

我有一个内联表单集合,里面有一个父实体和一个子实体。

我需要根据父实体的属性来设置子表单的初始值。

我想在我的BaseFormset表单的init方法里做这个,觉得这样最合适。

所以我这样做:

class MyBaseFormset(BaseInlineFormSet):

def __init__(self, *args, **kwargs):
    #Crispy
    ...
    super(MyBaseFormset, self).__init__(*args, **kwargs)

    form = self.forms[0]
    temp = Child()
    temp.x = "a"
    temp.y = "z"
    form.instance = temp

第一次执行这个的时候似乎没问题,但现在我总是得到一个空的或默认的子表单。

有没有人知道我可能哪里出错了?我没有收到任何错误信息……

1 个回答

1

有时候你会因为眼前的树木而看不到整片森林……

只需要使用初始值,而不是一个对象:

form.fields['x'].initial = self.instance.x

撰写回答