(注:本人用的pycharm開發工具)
1、在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段並和author建立多對多關系,author表新增int類型的age字段):
class book(models.Model):
name=models.CharField(max_length=100)
price=models.IntegerField()
date=models.DateField()
publish=models.ForeignKey('pub',on_delete=models.CASCADE,)
authors=models.ManyToManyField('author')
def __str__(self):
return self.name
class author(models.Model):
name=models.CharField(max_length=50)
sex=models.CharField(max_length=10)
age=models.IntegerField()
def __str__(self):
return self.name
2、在工程目錄打開命令行窗口輸入:python manage.py makemigrations
此時出現提示,說正在嘗試添加非空age字段,需要設置默認值,並提供兩個選擇 1 or 2 。如圖所示:
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 // 退出,讓我在Models.py中添加一個默認值
3、輸入:1(這里要求你設置新建字段的默認值,它會在新建這個字段的同時把默認值也添加上去,)
4、如果我們不想給默認值就設置blank=True和null=True。(因為值age字段是int類型,如果是CharField可以直接輸入'',中間沒有空格),一樣能達到效果,但是不能不設置默認值。
(blank:設置為True時,字段可以為空。設置為False時,字段是必須填寫的。字符型字段CharField和TextField是用空字符串來存儲空值的。如果為True,字段允許為空,默認不允許.
null:設置為True時,django用Null來存儲空值。日期型、時間型和數字型字段不接受空字符串。所以設置IntegerField,DateTimeField型字段可以為空時,需要將blank,null均設為True。
如果為True,空值將會被存儲為NULL,默認為False。如果想設置BooleanField為空時可以選NullBooleanField型字段。)
5、然后輸入:python manage.py migrate
6、最后我們刷新數據庫並查看數據庫,此時django自動給我們創建了第三方表,分別為book表和author表設置外鍵foreign key
新字段也已經加進去了,如果你設置了默認值,原來的這些數據的值都會設為你設置的默認值。
此時需求完成。