Eva*_*611 7 django django-templates
以下显示而不是我的模板中的字段.
<django.contrib.localflavor.us.forms.USStateSelect object at 0x92b136c>
Run Code Online (Sandbox Code Playgroud)
我的模板有
{{ form.state }}
Run Code Online (Sandbox Code Playgroud)
问题是什么?
class RegistrationForm(forms.Form):
first_name = forms.CharField(max_length=20)
last_name = forms.CharField(max_length=20)
phone = USPhoneNumberField()
address1 = forms.CharField(max_length=45)
address2 = forms.CharField(max_length=45)
city = forms.CharField(max_length=50)
state = USStateSelect()
zip = USZipCodeField()
Run Code Online (Sandbox Code Playgroud)
还有,我可以使州和拉链可选吗?
要将选项限制在下拉列表中,请us.us_states.STATE_CHOICES在模型中使用,us.forms.USStateField()而不是us.forms.USStateSelect()在表单中使用.
要在表单中创建字段可选,请添加blank = True到模型中的该字段.
from django.contrib.localflavor.us.us_states import STATE_CHOICES
from django.contrib.localflavor.us.models import USStateField
class ExampleLocation(models.Model):
address1 = models.CharField(max_length=45) #this is not optional in a form
address2 = models.CharField(max_length=45, blank = True) #this is made optional
state = USStateField(choices = STATE_CHOICES)
Run Code Online (Sandbox Code Playgroud)
而不是STATE_CHOICES,您可以在localflavor文档中找到几个选项.STATE_CHOICES是最具包容性的,但这可能不是你想要的.如果您只想要50个状态,再加上DC,请使用US_STATES.
这个答案假设您正在使用ModelForms.如果你不是,你应该.一旦你制作了模型,就应该遵循DRY并创建基本形式,如下所示:
from django.forms import ModelForm
class ExampleForm(ModelForm):
class Meta:
model = ExampleLocation
Run Code Online (Sandbox Code Playgroud)
它继承了模型中的字段.如果您不想要整个模型,可以使用其他class Meta选项(如fields或)自定义可用的字段exclude.模型表单与任何其他表单一样可自定义,它们只是从模型字段的假设开始.
| 归档时间: |
|
| 查看次数: |
3153 次 |
| 最近记录: |