如何使用django操作數據庫,向原有表中添加新的字段信息並建立一個多對多的關系?


(:本人用的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

 

新字段也已經加進去了,如果你設置了默認值,原來的這些數據的值都會設為你設置的默認值。

 

此時需求完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM