Django modelform - 当表单中的错误显示排除的字段并丢失翻译时?
Django modelform - when errors in the form it is showing excluded fields and losing translations?
我发现我的模型出现了奇怪的行为。如果我提交并且某个字段有错误,当我重新显示错误时,会出现排除的字段。还发生了这些字段被翻译成西班牙语的事情,我得到了原始英语的标签。
我正在使用 django 1.6.10,有谁知道这是一个错误还是我做错了什么?
我没有对渲染做任何花哨的事情,我只是在模板中做 {{ form }}
。
例如这是一个正常的形式
但是如果我提交空字段,我会得到额外的排除字段 "notes" 和原始字段的英文名称 "plate number":
型号代码如下:
class Operation3Domain(models.Model):
operation = models.ForeignKey(Operation, unique=True)
date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
notes = models.TextField(blank=True, null=True)
#this one is the only one I want to show:
plate_number = NumberPlateField()
class Meta:
app_label = "operation"
和模型形式:
class Operation3DomainForm(forms.ModelForm):
class Meta:
model = Operation3Domain
labels = { 'plate_number': 'Dominio/Patente'}
exclude = ['operation', 'notes']
感谢您的帮助!谢谢!!
让我回答我自己的问题!
所以排除字段的问题是在创建表单时我有一个过时的排除参数(抱歉!),它覆盖了表单的排除。
form_class = modelform_factory(step_model, exclude=('operation',))
form = form_class(request.POST, instance=instance)
但是!我仍然不知道为什么表格以英语而不是西班牙语出现,如果我直接使用表格 class 则不会发生这种情况:
form = Operation3DomainForm(request.POST, instance=instance)
谢谢!
我发现我的模型出现了奇怪的行为。如果我提交并且某个字段有错误,当我重新显示错误时,会出现排除的字段。还发生了这些字段被翻译成西班牙语的事情,我得到了原始英语的标签。
我正在使用 django 1.6.10,有谁知道这是一个错误还是我做错了什么?
我没有对渲染做任何花哨的事情,我只是在模板中做 {{ form }}
。
例如这是一个正常的形式
但是如果我提交空字段,我会得到额外的排除字段 "notes" 和原始字段的英文名称 "plate number":
型号代码如下:
class Operation3Domain(models.Model):
operation = models.ForeignKey(Operation, unique=True)
date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
notes = models.TextField(blank=True, null=True)
#this one is the only one I want to show:
plate_number = NumberPlateField()
class Meta:
app_label = "operation"
和模型形式:
class Operation3DomainForm(forms.ModelForm):
class Meta:
model = Operation3Domain
labels = { 'plate_number': 'Dominio/Patente'}
exclude = ['operation', 'notes']
感谢您的帮助!谢谢!!
让我回答我自己的问题!
所以排除字段的问题是在创建表单时我有一个过时的排除参数(抱歉!),它覆盖了表单的排除。
form_class = modelform_factory(step_model, exclude=('operation',))
form = form_class(request.POST, instance=instance)
但是!我仍然不知道为什么表格以英语而不是西班牙语出现,如果我直接使用表格 class 则不会发生这种情况:
form = Operation3DomainForm(request.POST, instance=instance)
谢谢!