2016-06-06 6 views
0

django 1.8으로 업그레이드 한 이후로 내 모델의 datetime 필드에 문제가 발생하여 올바르게 이전되지 않았습니다.dhango와 함께 datetime 필드가 이전하지 않습니다. 1.8

나는 반복적으로이 메시지를보고 있었다

:

Your models have changes that are not yet reflected in a migration, and so won't be applied. 
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them. 

내가 makemigrations를 실행하고 나는이 얻을 :

operations = [ 
    migrations.AlterField(
     model_name='profile', 
     name='date_of_hire', 
     field=models.DateField(default=datetime.date(2016, 6, 5)), 
    ), 
] 

그래서 내가 manage.py 마이그레이션을 실행 한 다음 내가 수를 :

Your models have changes that are not yet reflected in a migration, and so won't be applied. 
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them. 

그래서 make migrations을 다시 실행하고 위와 동일한 새 마이그레이션을 얻습니다.

date_of_hire = models.DateField(default=datetime.date.today()) 

나는 날짜가 명시 적으로 고정 된 날짜로 설정지고 있음을 알 수 마이그레이션을 보면 :

여기 내 문제 필드입니다. 그래서 지금이 내 필드를 변경하는 경우 :

date_of_hire = models.DateField(auto_now_add=True) 

또는이 :

File "/urls.py", line 13, in <module> 
import profiles.views as profile_views 
File "/profiles/views.py", line 9, in <module> 
from profiles.forms import CompanyProfileForm 
File "/profiles/forms.py", line 19, in <module> 
class ProfileForm(ModelForm): 
File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py", line 295, in __new__ 
raise FieldError(message) 
django.core.exceptions.FieldError: Unknown field(s) (date_of_hire) specified for Profile 

경우 : 내가 makemigrations을 실행하거나 내 서버를 시작하려고 할 때 다음 오류가

date_of_hire = models.DateTimeField(auto_now_add=True) 

필자는 form.py 필드 목록에있는 해당 필드를 제외한 모든 것이 양식 작동을 설명합니다. 마이그레이션을 수행하고 응용 프로그램을 적용하고 서버를 실행하는 등의 작업을 수행 할 수 있지만 해당 필드의 주석 처리를 취소하면 응용 프로그램이 허점을 인식합니다. 그래서, 당신은 대신를 호출, 호출 가능한 datetime.date.today을 통과해야 ... 손실에 당신의 default에서

답변

0

오전 :

date_of_hire = models.DateField(default=datetime.date.today) 

당신이 default=datetime.date.today()를 사용하는 경우, 장고 today() 당신이 당신의 models.py를로드 할 때마다 호출 . 이것은 기본값을 변경하기 때문에 Django는 새로운 마이그레이션이 필요하다고 생각합니다.

기본값을 datetime.date.today으로 변경하려면 기존 마이 그 레이션을 수정해야하지만 더 까다로울 수 있습니다.