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
[...]
相关分类