我得到了以下模型:
class currency(models.Model):
currency = models.CharField(max_length=50)
dollaramount = models.DecimalField(max_digits=10, decimal_places=2)
def __unicode__(self):
return self.currency
此模型包含2个货币值为“$”和“€”
的货币货币模型与以下形式的ModelChoiceField相关,其具有用户检查金额的用户定义验证“clean_amount”,具体取决于货币区域中实际选择的货币来自其自身。
如果所选对象的值为“$”或“€”,我如何在userdef-validation“clean_amount”中进行比较?
from django import forms
from currencies.models import currency
class createform(forms.Form):
currency = forms.ModelChoiceField(queryset = currency.objects.all())
amount = forms.DecimalField(initial = 0)
def clean_amount(self):
currencyfield = self.cleaned_data['currency']
amount = self.cleaned_data['amount']
if amount < 0:
raise forms.ValidationError("Amount must be at least 0.")
#HERE I WANT TO CHECK
choosencurrency = currencyfield.??????
if choosencurrency == "$" :
#check $amount
if choosencurrency == "€" :
#check €amount
return amount
答案 0 :(得分:1)
您应该在clean()
而不是clean_amount()
中执行此操作。从clean
,您可以访问self.cleaned_data['amount']
和self.cleaned_data['currency']
。