有關(guān)middleware的錯誤
提出問題
在運行python manage.py makemigrations
出現(xiàn)了錯誤守伸,錯誤信息如下:
ERRORS:
?: (admin.E408) 'django.contrib.auth.middleware.AuthenticationMiddleware' must be in MIDDLEWARE in order to use the admin application.
?: (admin.E409) 'django.contrib.messages.middleware.MessageMiddleware' must be in MIDDLEWARE in order to use the admin application.
?: (admin.E410) 'django.contrib.sessions.middleware.SessionMiddleware' must be in MIDDLEWARE in order to use the admin application.
解決方法
之前我將MIDDLERWARE的內(nèi)容全部注釋掉了,然后加上了自己想要修改的內(nèi)容害幅,由于報錯婉支,因此我將上面三個取消注釋,最后結(jié)果如下:
MIDDLEWARE = [
#'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
#'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
#'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myblog', #新建立的app
]
然后再嘗試命令:
python manage.py makemigrations
成功運行。
有關(guān)model默認(rèn)值的問題
提出問題
我之前的Shoes類是這樣的:
class Shoes(models.Model):
# 球鞋表的創(chuàng)建
# 把id作為主鍵瘪校,考慮到后面網(wǎng)址的拼接id是str類型,
# 所以這里主鍵設(shè)置為charfiled
ShoesId=models.CharField(verbose_name='球鞋id',max_length=100,primary_key=True) #不要加default屬性
title=models.CharField(verbose_name='球鞋title',max_length=100)
user=models.CharField(verbose_name='用戶名稱',max_length=100,default='root')
class Meta:
verbose_name = '球鞋id'
verbose_name_plural = verbose_name
def _str_(self):
return self.title
后來添加了一個屬性叫number:
number=models.CharField(verbose_name='球鞋貨號',max_length=100)
然后運行命令:python manage.py makemigrations
這個報出錯誤:
You are trying to add a non-nullable field 'number' to shoes 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 with a null value for this column)
2)Quit, and let me add a default in models.py
Select an option:
解決辦法
這種問題的解決辦法一般是名段,將新增的屬性設(shè)置一個默認(rèn)值即可:
number=models.CharField(verbose_name='球鞋貨號',max_length=100,default=" ")