2014-09-23 70 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.')}, 
    } 
    ....