Django:在 init 中访问 form_kwargs

form_kwargs我__init__在forms.py中定义并且可以直接访问它们。我希望做organizer = kwargs.pop('organizer')等。谁能解释我为什么我可以直接访问这些 kwargs,即使它们应该存储在里面form_kwargs?


我目前正在尝试将此行为复制到我的,class BaseReserveFormSet(BaseFormSet):但在那里我无法访问它们kwargs.pop


@cached_property

    def formset(self):

        ReserveFormSet = formset_factory(

            ReserveForm,

            formset=BaseReserveFormSet,

            extra=0

        )


        return ReserveFormSet(

            data=(

                self.request.POST

                if self.request.method == 'POST'

                else None

            ),

            initial=self.tickets,

            form_kwargs={

                'organizer': self.request.organizer,

                'event': self.request.event,

                'user_order_reference': self.request.session.get('order_reference'),

                'discount_code_session': self.discount_code,

            }

        )

表格.py


class BaseReserveFormSet(BaseFormSet):


    def __init__(self, *args, **kwargs):

        self.discount_code_session = kwargs['form_kwargs']['discount_code_session']

        self.event = kwargs['form_kwargs']['event']

        # print(kwargs.pop('discount_code_session'))  # Why does this not work?

        super().__init__(*args, **kwargs)    


class ReserveForm(forms.ModelForm):

        class Meta:

            model = ReservedItem

            fields = ['ticket', 'quantity']


        def __init__(self, organizer, event, user_order_reference,

                     discount_code_session, *args, **kwargs):

            self.organizer = organizer

            self.event = event

            [...]


繁花如伊
浏览 191回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python