2013-08-19 1 views
0

Django 사이트의 모델 중 하나의 필드에 기본값을 추가했습니다. 기본값을 설정하기 전에 있었던이 유형의 모든 오브젝트는이 필드에 대해 널 값을가집니다. 기본 값을 설정하기 전에 이미 존재하는 모든 객체에 거꾸로 전파되도록 설정된 새 기본값을 원합니다. 어떻게해야합니까?새로운 Django 객체에 새로운 기본값 전달

+0

덕분 다니엘이 *의 거기 상승 모든! – abw333

답변

3

그냥 업데이트 쿼리를 실행

MyModel.objects.filter(myfield__isnull=True).update(myfield=new_value) 
+0

나는 매우 비슷한 코드 줄로 문제를 해결했다 : orm [ 'main.mymodel']. objects.filter (myfield__isnull = True) .update (myfield = 0)'. 필자는 마이그레이션 스크립트 중 하나의 전달 방법에 해당 라인을 배치했습니다. – abw333

0

South을 사용하여 Schemamigration을 수행해야합니다. 매우 쉽습니다. 설명서에 대한 자습서를 따르십시오. 필드에서 null=True, blank=True을 제거하면 null/빈 필드를 원하는지 묻는 메시지가 표시되고 기본값을 입력 할 수 있습니다.

+0

'null = True, blank = True'를 제거하고'python manage.py schemamigration main --auto'과'python manage.py migrate main'을 실행했습니다. 그것은 다음과 같은 에러를 낳았습니다 : null/빈 필드에 대해 묻지 않고'django.db.utils.IntegrityError : _south_new_main_network.panel_image_file_id가 NULL이 아닐 수도 있습니다. ' 제발 조언. – abw333