我卡住與models.DateField()我無法解決Django models.DateField驗證錯誤
錯誤首先,我做到了這一點。
models.py
from datetime import date, datetime
from django.db import models
class User(models.Model):
uid = models.AutoField(primary_key=True)
birthdate = models.DateField()
然後,我得到了,
$ python manage.py makemigrations
You are trying to add a non-nullable field 'birthdate' to user_profile without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
所以,我做了,
models.py
from datetime import date, datetime
from django.db import models
class User(models.Model):
uid = models.AutoField(primary_key=True)
birthdate = models.DateField(default=date.today)
然後,
$ python manage.py migrate
django.core.exceptions.ValidationError: ["'' は無効な日付形式です。YYYY-MM-DD形式にしなければなりません。"]
錯誤的意思就像「''對於日期的合成無效。你應該改變以YYYY-MM-DD」。
我應該如何改變這種代碼? 謝謝。
///額外/// 如果可以,我不想插入日期INTO生日領域。但似乎我不得不這樣做。我可以讓它空白?
birthdate = models.DateField(null=True, blank=False)
沒有工作。
的Python 3.5.1 Django的1.9.1
'blank = False'表示該字段不能爲空。你可以將它改爲'blank = True'並重試? –
謝謝你的回覆。我做了birthdate = models.DateField(null = True,空白= True),我又得到了ValidationError。我做了birthdate = models.DateField(null = True,空白= True)和終端說「1)現在提供一次性默認值(將在所有現有行上設置) 2)現在忽略,讓我用NULL處理現有的行(例如,因爲您添加了RunPython或RunSQL操作來處理先前數據遷移中的NULL值) 3)退出,讓我在models.py中添加一個默認值「 – yamachan
好吧,如果在執行'null = True時提示您進行選擇,blank = True',不是你想要的第二個選項(把字段留空)?另外,我覺得你的遷移可能會因爲你試圖遷移很多次而混亂,你應該刪除負責這個的遷移文件並重新生成 –