Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
覆盖Django formfields/models上的标签_Django_Django Models_Django Forms - Fatal编程技术网

覆盖Django formfields/models上的标签

覆盖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

我正在尝试编辑网页上显示的表单字段的标签。我采用了与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 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属性编写的代码一样。