2009-06-18 3 views
0

값이 모델 속성의 기본값인지 여부를 어떻게 알 수 있습니까? Django : 속성이 기본값인지 알 수 있습니다.

class Alias(models.Model) : 
    image = models.ImageField(upload_to='alias', default='/media/alias-default.png') 

a = Alias.get("123") 
# this doesn't work 
if a.image == a.image.default : 
    pass 
# nor this 
if a.image == Alias.image.default : 
    pass 

예를

를 들어

나는이 문서에 파고 시도했지만 아무것도 보이지 않았다.

답변

2

Django의 default은 SQL 기본값과 다릅니다. 관리자가 새 개체 생성시 양식 필드를 자동으로 채울 수 있습니다.

default으로 정의 된 값과 비교하려는 항목은 다른 곳에서 정의해야합니다 (즉, settings.py). 마찬가지로 :

class MyModel(models.Model): 
    ... 
    my_field = models.IntegerField(default=settings.INT_DEFAULT) 

default 값은 MyModel._meta._fields()[field_creation_index].default에 저장하지만이 내부에 파고 알고 있어야한다.

+0

_meta가 지원되거나 앞으로 변경 될 수 있습니까? –

+0

이름이 밑줄로 시작하는 것은 모두 내부로 간주되어야합니다. 어쨌든 1.0에서 1.1 사이에는 변하지 않았습니다. – zgoda

+0

내부 속성 (_meta가 내부 API에 상당히 안정적)을 사용하려면 생성 색인을 사용하는 대신 MyModel._meta.get_field ('field_name'). default를 읽기가 더 쉽습니다. –

3

당신은 재산 자체에서 그것을 얻을 수 없다, 당신은 model._meta의 밑에 모형 선택권을 통해 가야한다.

a._meta.get_field_by_name('image')[0].get_default() 
+0

앞으로 지원이 변경되거나 변경 될 수 있습니까? –

관련 문제