2012-09-06 3 views
0

내 객체에 DecimalField이 있고 20으로 설정된 경우를 가정 해보십시오. 파이썬에서 객체를 만들고 그 객체의 값을 지정하지 않으면 None입니다.Django 모델 필드 기본값은 객체를 수동으로 만들 때 적용되지 않습니다.

값을 제공하지 않을 때마다 기본값이 적용되는지 확인하려면 어떻게해야합니까?

class SomeModel(models.Model): 
    """Demonstrate the flaw of the default value.""" 

    dec_field = models.DecimalField(default=1, blank=True, null=True) 


my_model = SomeModel() 
my_model.save() # this is where I expect the dec_field to become Decimal('1.0') 
       # instead it's None 
+3

기본값을 설정하는 코드를 추가하십시오 –

+0

코드를 공유 할 수 있습니까? decimal = models.DecimalField (default = 20) – karthikr

+0

또한이 10 진수 값을 데이터베이스에 제출할 양식의 코드를 추가하십시오. –

답변

1

기본값은 설명 된 내용으로 설정해야하며 예에 대한 자세한 정보가 필요합니다. 그러나 수동으로 기본값을 설정하거나 무시하려면 다음 작업을 수행 할 수 있습니다.

DEC_FIELD_DEFAULT = 20 
class Example(models.Model): 
    dec_field = models.DecimalField(default=DEC_FIELD_DEFAULT) 

    def __init__(self, *args, **kwargs): 
     super(Example, self).__init__(self, *args, **kwargs) 
     self.dec_field = DEC_FIELD_DEFAULT 
+0

나는 __init__에서하는 일을 좋아하지만 이것은 장고가 기본적으로하는 일이라고 생각한다. 내가 직접해야한다면 DRY하지 마라. – Dmitry

2

모델과 데이터베이스가 South와 같은 마이그레이션 도구로 동기화되었는지 또는 테이블을 삭제하고 다시 동기화하는지 확인하십시오.

관련 문제