2014-09-23 71 views
2

我有一个模型类与选择列表/正整数字段。django正整数空白的默认值

class AchievementDetails(models.Model, FillableModelWithLanguageVersion): 
    ACADEMIC_ACHIEVEMENT = 1 
    COMMERCIAL_ACHIEVEMENT = 2 
    PERSONAL_ACHIEVEMENT = 3 
    PROFESSIONAL_ACHIEVEMENT = 4 
    SPORTING_ACHIEVEMENT = 5 
    OTHER_ACHIEVEMENT_TYPE = 6 

ACHIEVEMENT_TYPES = (
    (ACADEMIC_ACHIEVEMENT, _('Academic Details')), 
    (COMMERCIAL_ACHIEVEMENT, _('Commercial Achievement')), 
    (PERSONAL_ACHIEVEMENT, _('Personal Achievement')), 
    (PROFESSIONAL_ACHIEVEMENT, _('Professional Achievement')), 
    (SPORTING_ACHIEVEMENT, _('Sporting Achievement')), 
    (OTHER_ACHIEVEMENT_TYPE, _('Other Achievement Type')), 
) 

.... 
achievement_type = models.PositiveIntegerField(choices=ACHIEVEMENT_TYPES) 
.... 

以上设立在添加下列选择列表选项为默认选项:

<option value="">---------</option> 

我已经指示不包括SELECT_TYPE =“”到ACHIEVEMENT_TYPES。

我使用django-parsley进行客户端验证,所以选项值必须是空白值。

我有两个问题:

1.如何更换的 '---------' 与 '选择成就型'

2.如何默认文本当窗体位于编辑模板中时,是否删除默认选项值?

回答

1

我得到这个用来工作:

validators=[MinValueValidator(1)] 

这是我如何使用它:

包括在models.py文件导入:

from django.core.validators import MinValueValidator 

附上models.py文件中包含零值的类型:

SELECT_ACHIEVEMENT_TYPE = 0 
ACADEMIC_ACHIEVEMENT = 1 
COMMERCIAL_ACHIEVEMENT = 2 
PERSONAL_ACHIEVEMENT = 3 
PROFESSIONAL_ACHIEVEMENT = 4 
SPORTING_ACHIEVEMENT = 5 
OTHER_ACHIEVEMENT_TYPE = 6 
WRITE_MY_OWN_ACHIEVEMENT_TYPE_DESCRIPTION = 7777 # 7777 triggers a hidden text field to be displayed. 
DISPLAY_ONLY_ACHIEVEMENT_DESCRIPTION_WITH_PROMPT = 8888 
DISPLAY_ONLY_ACHIEVEMENT_DESCRIPTION_WITHOUT_PROMPT = 9999 

ACHIEVEMENT_TYPES = (
    (SELECT_ACHIEVEMENT_TYPE, _('Select Type')), 
    (ACADEMIC_ACHIEVEMENT, _('Academic Achievement')), 
    (COMMERCIAL_ACHIEVEMENT, _('Commercial Achievement')), 
    (PERSONAL_ACHIEVEMENT, _('Personal Achievement')), 
    (PROFESSIONAL_ACHIEVEMENT, _('Professional Achievement')), 
    (SPORTING_ACHIEVEMENT, _('Sporting Achievement')), 
    (OTHER_ACHIEVEMENT_TYPE, _('Other Achievement Type')), 
    (WRITE_MY_OWN_ACHIEVEMENT_TYPE_DESCRIPTION, _('Write my own Type description')), 
    (DISPLAY_ONLY_ACHIEVEMENT_DESCRIPTION_WITH_PROMPT, _('Display only Description with prompt')), 
    (DISPLAY_ONLY_ACHIEVEMENT_DESCRIPTION_WITHOUT_PROMPT, _('Display only Description without prompt')) 
) 

包括与选择,默认和MinValueValidator models.py文件字段:

.... 
achievement_type = models.PositiveIntegerField(choices=ACHIEVEMENT_TYPES, default=SELECT_ACHIEVEMENT_TYPE, validators=[MinValueValidator(1)]) 
.... 

在forms.py文件,包括error_messages元数据重写(适用于Django 1.5+)的错误消息:

..... 
    error_messages = { 
     'achievement_type': {'validate_min': _('This field is required.')}, 
    } 
    ....