Передача и использование объекта запроса в формах django

Я пытаюсь использовать объект запроса для создания динамического выпадающего списка в моей форме, используя следующий код:

view:

form = TransactionForm(request.user)

Форма:

class TransactionForm(forms.Form, request.user):
    # Payment methods
    get_mm_details = MMDetails.objects.filter(username=request.user)
    get_card_details = CardDetails.objects.filter(username=request.user)
    payment_meth = []

    # form fields
    trans_amount = forms.IntegerField(label="Amount", min_value=0)
    payment_method = forms.CharField(
        label='Payment method',
        widget=forms.Select(
            choices=payment_meth
            )
    )

есть ли способ использовать объект запроса в форме?

Вы передаете запрос в наследовании класса, что определенно не является правильным способом. Вам нужно создать конструктор и передать запрос туда следующим образом:

forms.py:

 class TransactionForm(forms.Form):

   get_mm_details = None
   get_card_details = None
   payment_meth = []

   # rest of the code

   def __init__(self, *args, **kwargs):
     self.request = kwargs.pop('request', None)
     username = self.request.user.username
     self.get_mm_details = MMDetails.objects.filter(username=username)
     self.get_card_details = CardDetails.objects.filter(username=username)
     super(MyForm, self).__init__(*args, **kwargs)

views.py:

 form = TransactionForm(request=request)
Вернуться на верх