在设置modelform时访问查询集值

时间:2016-08-22 16:37:39

标签: python django django-forms

是否可以从用于创建表单类的查询集中访问值。例如,我有以下观点:

class MyView(View):

    position = Position()
    form_class = PortfolioForm
    PositionModelFormSet = modelformset_factory(Position,
                                                fields=('symbol', 'direction', 'size'),
                                                form=form_class)

    def get(self, request):
        positions = self.position.get_user_positions_qs(user=request.user)
        portfolio = self.PositionModelFormSet(queryset=positions)

我需要的是能够在创建表单时访问传递给PortfolioForm的值。换句话说,对于formset中的每个表单,都有一个在实例化时使用的查询集。我需要在设置表单时访问该查询集中的值。例如,PortfolioForm类似于:

class PortfolioForm(forms.ModelForm):

    value = get_value_from_queryset  # eg: access symbol field
    do_something_with_value(value)

    class Meta:

        model = Position
        fields = ['symbol', 'direction', 'size']

我正在考虑通过覆盖表单__init__方法并使用self.instancekwargs以某种方式访问​​它,但到目前为止我还没有运气。

1 个答案:

答案 0 :(得分:1)

使用ModelForm,form.instance已经可以使用了。

形式为:self.instance

在视图中:formset.form.instance