Похоже, вам нужно добавить dict
my_dict= {'btc': 'BTC', 'xmr': 'XMR', 'ltc': 'LTC'}
и затем ссылаться на них через my_dict.keys()
и my_dict.values()
.
Что-то вроде:
if currency in my_dict.keys:
val = my_dict[currency]
price = dollar_to_coin(item.price_usd, val)
РЕДАКТИРОВАТЬ: Что касается присвоения currency
в views.py , может быть лучше добавить еще один метод в ваш класс CurrencyBuySelectForm
.Метод clean()
должен очищать только данные, затем вы можете добавить метод currency()
, который выполняет присваивание и проверку currency
и возвращает его.Затем вы можете ссылаться на него, используя currency = form.currency()
Что-то вроде:
views.py
my_dict= {'btc': 'BTC', 'xmr': 'XMR', 'ltc': 'LTC'}
if request.method == "POST":
form = CurrencyBuySelectForm(request.POST)
currency = form.currency()
# check account balance
if form.is_valid:
if currency in my_dict.keys():
price = dollar_to_coin(item.price_usd, my_dict[currency])
if request.user.acc_btc_balance < price:
messages.error(request,'Not enough balance to buy this item')
return redirect('item', pk=item.pk)
else:
# do blabla
forms.py
WALLET_CHOICE = [
('btc', 'BTC'),
('xmr', 'XMR'),
('ltc', 'LTC'),
...
]
class CurrencyBuySelectForm(forms.Form):
currency = forms.ChoiceField(choices=WALLET_CHOICE, widget=forms.RadioSelect())
captcha = CaptchaField()
def __init__(self, *args, **kwargs):
super(CurrencyBuySelectForm, self).__init__(*args, **kwargs)
self.fields['currency'].label = mark_safe('')
def clean(self):
self.cleaned_data = super(CurrencyBuySelectForm, self).clean()
def currency(self):
self.currency = self.cleaned_data.get(choices=WALLET_CHOICE, widget=forms.RadioSelect())
if not self.currency:
raise forms.ValidationError('Something went wrong')
return self.currency