溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

django中怎么進(jìn)行數(shù)據(jù)的增刪改

發(fā)布時(shí)間:2021-10-21 15:10:39 來(lái)源:億速云 閱讀:126 作者:柒染 欄目:大數(shù)據(jù)

django中怎么進(jìn)行數(shù)據(jù)的增刪改,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

在 web 開(kāi)發(fā)中,最重要的是數(shù)據(jù)庫(kù)的設(shè)計(jì),就是 models 模型設(shè)計(jì),簡(jiǎn)單的web開(kāi)發(fā)說(shuō)白了就是對(duì)數(shù)據(jù)庫(kù)的增刪改查,今天先看下數(shù)據(jù)庫(kù)的增加,修改,和刪除吧,我們操作數(shù)據(jù)庫(kù)可以使用原生sql語(yǔ)句,但是如果sql的操作語(yǔ)句不復(fù)雜,可以使用django 的 ORM 語(yǔ)句,它是通過(guò)一些封裝,根據(jù) ORM 的語(yǔ)法可以對(duì)數(shù)據(jù)庫(kù)增刪改查,用一同一個(gè) ORM 語(yǔ)句可以支持對(duì) mysql、sqlite、PostgreSQL、Oracle 等數(shù)據(jù)庫(kù)增刪改操作,兼容性很強(qiáng)。

我現(xiàn)在的model模型是有兩個(gè)表,一個(gè)學(xué)生表,一個(gè)班級(jí)表,代碼如下:

class Student(models.Model): # 一定要繼承    # CharField為字符串類型,必須有max_length設(shè)置最大長(zhǎng)度,verbose_name在django后臺(tái)顯示該英文字段的中文意思    name = models.CharField(max_length=30, verbose_name="學(xué)生姓名")    # IntegerField整型    age = models.IntegerField(default=16, verbose_name="學(xué)生年齡")    # DecimalField浮點(diǎn)型,max_digits=5表示整數(shù)部分和小數(shù)位數(shù)之和不大于5,decimal_places表示小數(shù)的最大位數(shù),    # null=True表示字段可以為空,blank=True表示在admin后臺(tái)中該數(shù)據(jù)欄可以為空    score = models.DecimalField(verbose_name='成績(jī)', max_digits=5, decimal_places=2, null=True, blank=True)#    # EmailField該字段必須符合郵箱格式    email = models.EmailField(verbose_name='郵箱', null=True, blank=True)    # TextField 字段位文本類型,長(zhǎng)度沒(méi)有限制    introduce = models.TextField(verbose_name="學(xué)生自我介紹")    # DateTimeField為日期類型,auto_now_add=True該條數(shù)據(jù)創(chuàng)建的時(shí)間,數(shù)據(jù)更新時(shí),時(shí)間數(shù)值不變    # auto_now=True該條數(shù)據(jù)創(chuàng)建的時(shí)間,數(shù)據(jù)更新時(shí),時(shí)間數(shù)值也會(huì)改變    created_at = models.DateTimeField(auto_now_add=True, verbose_name="創(chuàng)建時(shí)間")    updated_at = models.DateTimeField(auto_now=True, verbose_name="更新時(shí)間")    # ForeignKey一對(duì)多外鍵,比如一個(gè)班級(jí)有多個(gè)學(xué)生,就屬于一對(duì)多,外鍵要放到"多"的那張表,    # related_name是對(duì)外鍵取別名,常用在django的orm反向查詢中    cls = models.ForeignKey('Class', related_name="stu_cls", null=True, on_delete=models.PROTECT)

   # 下面是django后臺(tái)字段顯示控制    class Meta:        verbose_name_plural = verbose_name = "學(xué)生表"    def __str__(self):        return self.name

class Class(models.Model): # 班級(jí)表    name = models.CharField(verbose_name='班級(jí)名稱',max_length=10)    created_at = models.DateTimeField(auto_now_add=True, verbose_name="創(chuàng)建時(shí)間")    updated_at = models.DateTimeField(auto_now=True, verbose_name="更新時(shí)間")
   def __str__(self):        return self.name
   class Meta:        verbose_name = verbose_name_plural = '班級(jí)'

然后進(jìn)行同步數(shù)據(jù)庫(kù)操作,在 pycharm 中打開(kāi)終端(Terminal),在命令行中輸入:

django中怎么進(jìn)行數(shù)據(jù)的增刪改

下面在一個(gè) views.py 文件中寫(xiě)一個(gè)視圖函數(shù),使用 ORM 進(jìn)行基本的增刪改操作。記得給函數(shù)配置對(duì)應(yīng)的 url。


def orm_test(request):    # 新增一個(gè)名字為1901的一個(gè)班級(jí),create是新增方法,里面可以接受多個(gè)字段參數(shù)    # Class.objects.create(name="1901")    # 同時(shí)新增一個(gè)學(xué)生和班級(jí)操作    # 新增一個(gè)班級(jí)名稱為1903的班級(jí),返回一個(gè)班級(jí)實(shí)例    cls_instance = Class.objects.create(name="1903")    # stu_info左邊的key要和Student模型字段對(duì)應(yīng)上,因?yàn)閏ls是外鍵,所以要對(duì)應(yīng)一個(gè)班級(jí)的實(shí)例    stu_info = {        "name":"靜靜",        "age": "18",        "score":"67.50",        "email": "123@qq.com",        "introduce": "我是靜靜",        "cls": cls_instance    }    Student.objects.create(**stu_info)    # 將名字為1901的班級(jí)名稱改為1901_xiu,filter為過(guò)濾,支持多個(gè)參數(shù),update是更新方法,支持多個(gè)參數(shù)    # Class.objects.filter(name="1901").update(name="1901_xiu")    # 將名字為1901_xiu的班級(jí)刪除掉,delete是刪除方法    # Class.objects.filter(name="1901_xiu").delete()

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI