Передача и использование объекта запроса в формах 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)