我试图创建一个表单,用户填写语言,描述和语言级别(中级,高级...)。
语言模型:
class Language(models.Model):
shortcut = models.CharField(max_length=6)
name = models.CharField(max_length=50)
first_level_price = models.FloatField() # Basic
second_level_price = models.FloatField() # Intermediate
third_level_price = models.FloatField() # Advanced
def __str__(self):
return self.shortcut+': '+self.name
对于每种语言,都有三个级别和价格(first_level_price
,second_level_price
,third_level_price
)。
现在,我希望用户填写表单。其中一种形式应该是水平。用户只需选择' Basic',' Intermediate'或者'高级'。根据这个选择,会计算价格。
因此,如果user
已选择'基本',则会根据该语言的first_level_price
定价。
我尝试了很多方法,但没有人工作。
level = forms.ChoiceInput(choices=('Basic','Intermediate','Advanced'))
答案 0 :(得分:1)
选择应该是一对元组。对中的第一个值是您进入表单实例的数据,该对的第二个值是模板中显示的值:
level = forms.ChoiceField(choices=(('basic', 'Basic'),
('intermediate', 'Intermediate'),
('advanced', 'Advanced')))
查看choices
的详细信息{/ 3}}。
答案 1 :(得分:1)
您可以像这样更新您的模型:
shaded.example.Foo
现在你可以使用这个模型创建一个class Language(models.Model):
PRICE_CHOICES = (
('first_level_price', 'Basic'),
('second_level_price', 'Intermediate'),
('third_level_price', 'Advanced'),
)
first_level_price = models.FloatField() # Basic
second_level_price = models.FloatField() # Intermediate
third_level_price = models.FloatField() # Advanced
shortcut = models.CharField(max_length=6)
name = models.CharField(max_length=50)
level = models.CharField(max_length=50, choices=PRICE_CHOICES)
def __str__(self):
return self.shortcut+': '+self.name
,它应该按照你期望的方式工作。
当用户选择ModelForm
又名first_level_price
会员资格时,您现在可以从Basic
字段中获取价格。