覆盖Django formfields/models上的标签
我正在尝试编辑网页上显示的表单字段的标签。我采用了与Django文档相同的格式,如以下链接所示: . 但是,我的标签保持不变。我使用的是Django 1.6.5,因此它肯定支持标签覆盖。有什么想法吗 我的代码如下:覆盖Django formfields/models上的标签,django,django-models,django-forms,Django,Django Models,Django Forms,我正在尝试编辑网页上显示的表单字段的标签。我采用了与Django文档相同的格式,如以下链接所示: . 但是,我的标签保持不变。我使用的是Django 1.6.5,因此它肯定支持标签覆盖。有什么想法吗 我的代码如下: #forms.py from django.forms import ModelForm, RadioSelect from webpage.models import Career from django.utils.translation import ugettext_lazy
#forms.py
from django.forms import ModelForm, RadioSelect
from webpage.models import Career
from django.utils.translation import ugettext_lazy as _
class ApplyForm(ModelForm):
class Meta:
model= Career
fields=['name','email','phone','position_desired','street_address','city','state','zip_code','high_school','hsloc','hssub','hsyears','hsgrad']
widgets = {
'hsgrad': RadioSelect,
}
labels = {
'hsloc': _('Location: '),
'hssub': _('Subject(s) Studied/Degree(s) Received: '),
'hsyears': _('Years Completed: '),
'hsgrad': _('Did you graduate? '),
}
#models.py
from django.db import models
from localflavor.us.models import PhoneNumberField, USStateField, ZipCodeField
BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))
# Create your models here.
class Career(models.Model):
name=models.CharField(max_length=50)
email=models.EmailField(max_length=30)
phone=PhoneNumberField()
position_desired=models.CharField(max_length=50, blank=True, null=True)
street_address=models.CharField(max_length=50)
city=models.CharField(max_length=30)
state=USStateField()
zip_code=ZipCodeField()
high_school = models.CharField(max_length=50)
hsloc = models.CharField(max_length=50)
hssub = models.CharField(max_length=50)
hsyears = models.CharField(max_length=10)
hsgrad = models.BooleanField(choices=BOOL_CHOICES, blank=False, default='Unspecified')
它应该明确地忽略它们: 来自Django文档: ModelForm是一种可以自动生成特定字段的常规表单。自动生成的字段取决于元类的内容以及已声明定义的字段。基本上,ModelForm只会生成表单中缺少的字段,或者换句话说,就是没有声明性定义的字段 以声明方式定义的字段保持原样,因此 对元属性(如小部件、标签、, 帮助信息或错误信息被忽略;这些仅适用于字段 是自动生成的 直接在模型中声明标签:
class Career(models.Model):
name=models.CharField(max_length=50)
email=models.EmailField(max_length=30)
phone=PhoneNumberField()
position_desired=models.CharField(max_length=50, blank=True, null=True)
street_address=models.CharField(max_length=50)
city=models.CharField(max_length=30)
state=USStateField()
zip_code=ZipCodeField()
high_school = models.CharField(max_length=50)
hsloc = models.CharField(_('Location'),max_length=50)
hssub = models.CharField(_('Subject(s) Studied/Degree(s) Received'),max_length=50)
hsyears = models.CharField(_('Years Completed'),max_length=10)
hsgrad = models.BooleanField(_('Did you graduate?'),choices=BOOL_CHOICES, blank=False, default='Unspecified')
为什么不直接在模型内部声明标签以使模型更具可读性:hsloc=models.CharField\uu'Location',max\u length=50?你在说什么?请在发布此类答案或向下投票答案之前阅读。你在说什么?冗长的名称不是标签。仅仅因为表单在缺少标签时使用了详细的名称,并不意味着它们是相同的东西。这个讨论太荒谬了,你能理解吗?当Django第一次使用verbose_名称呈现表单标签时,会重新声明表单中的字段是什么?是否需要定义两个单独的标签?或者模型表单的最大长度是否与模型的最大长度不同?我们讨论的是已经存在的模型字段,而不是只需要表单使用的附加字段。请阅读关于关注点分离的内容。谢谢,这很有效!我有点困惑,我链接到的Django文档示例的区别是什么。他们能够在表单页面上声明标签,就像我之前为Author模型的name属性编写的代码一样。