加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Django操作mysql數(shù)據(jù)庫(kù)(二)

07/01 15:24
579
閱讀需 10 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

模型文檔地址

https://docs.djangoproject.com/en/3.0/topics/db/models/

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)

上一篇文檔,我們把這個(gè)模型的流程,通過(guò)pycharm走通了,那么,我們現(xiàn)在就可以根據(jù)官方文檔,碼代碼了。

1、ORM設(shè)計(jì)思想

即Object-Relationl Mapping,它的作用是在關(guān)系型數(shù)據(jù)庫(kù)和對(duì)象之間作一個(gè)映射,可以認(rèn)為,django通過(guò)models將python語(yǔ)言翻譯成了數(shù)據(jù)庫(kù)執(zhí)行語(yǔ)句 。

例如,下面的代碼1和代碼2是等價(jià)的:

代碼1(python):

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

代碼2(sql):

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

2、django的模型使用

上一篇文檔中,我們?cè)谑褂媚P蜕嫌龅搅艘恍┛?,其中一個(gè)是要把應(yīng)用進(jìn)行注冊(cè)才能使用模型。這點(diǎn)在官方文檔也是說(shuō)明了的:

Once you have defined your models, you need to tell Django you’re going to use those models. Do this by editing your settings file and changing the INSTALLED_APPS setting to add the name of the module that contains your models.py.

3、字段

Django附帶了幾十個(gè)內(nèi)置字段類(lèi)型,可以在模型字段引用中找到完整的列表。如果Django的內(nèi)置字段不能實(shí)現(xiàn)這個(gè)功能,也可以很容易地編寫(xiě)自己的字段。

字段類(lèi)型:https://docs.djangoproject.com/en/3.0/ref/models/fields/#model-field-types

自定義:https://docs.djangoproject.com/en/3.0/howto/custom-model-fields/

(1)字段的參數(shù)定義(這里截取上一個(gè)文檔的例子):

loginname = models.CharField(max_length=20, null=False, unique=True)

在這里插入圖片描述

如上,對(duì)于字段有一些通用參數(shù):

@參數(shù) null:
為T(mén)rue,將空值存儲(chǔ)為NULL,否則不存儲(chǔ)

@參數(shù)blank:
為T(mén)rue,允許輸入空值;為False,則必填

@參數(shù)choices:
YEAR_IN_SCHOOL_CHOICES = [
(‘FR’, ‘Freshman’),
(‘SO’, ‘Sophomore’),
(‘JR’, ‘Junior’),
(‘SR’, ‘Senior’),
(‘GR’, ‘Graduate’),
]

用于頁(yè)面上的選擇框標(biāo)簽,models提供一個(gè)二維的二元元組,第一個(gè)元素表示存在數(shù)據(jù)庫(kù)內(nèi)真實(shí)的值,第二個(gè)表示頁(yè)面上顯示的具體內(nèi)容。

@參數(shù)default:
字段的默認(rèn)值。它可以是值或可調(diào)用對(duì)象。

@參數(shù)help_text:
把鼠標(biāo)放到頁(yè)面部件上,會(huì)顯示

@參數(shù)primary_key:
如果為T(mén)rue,自定義該字段為模型的主鍵,屬性為只讀。 django會(huì)自動(dòng)添加一個(gè)IntegerField來(lái)保存主鍵,即id:

id = models.AutoField(primary_key=True)

@參數(shù)unique:
如果為真,則該字段必須在整個(gè)表中唯一。

@參數(shù)primary_key:
django默認(rèn)生成主鍵id:
id = models.AutoField(primary_key=True)

@參數(shù)verbose_name
django自動(dòng)創(chuàng)建字段名稱 verbose_name

自定義:
first_name = models.CharField(verbose_name=“person’s first name”, max_length = 30)

默認(rèn)自動(dòng)填寫(xiě):
first_name = models.CharField( max_length = 30)

其中,F(xiàn)oreignKey, ManyToManyField 和OneToOneField沒(méi)有該參數(shù)。而且,Django會(huì)自動(dòng)將第一個(gè)字母大寫(xiě)(哪怕是自定義的)。

3、關(guān)系

Django提供了定義三種最常見(jiàn)的數(shù)據(jù)庫(kù)關(guān)系類(lèi)型的方法:多對(duì)一、多對(duì)多和一對(duì)一。

(1)多對(duì)一例子

class Manufacturer(models.Model):
    # ...
    pass

class Car(models.Model):
    manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE)

(2)多對(duì)多例子

class Topping(models.Model):
    # ...
    pass

class Pizza(models.Model):
    # ...
    toppings = models.ManyToManyField(Topping)

(3)一對(duì)一例子

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

    def __str__(self):
        return "%s the place" % self.name

class Restaurant(models.Model):
    place = models.OneToOneField(
        Place,
        on_delete=models.CASCADE,
        primary_key=True,
    )
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

    def __str__(self):
        return "%s the restaurant" % self.place.name

class Waiter(models.Model):
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)

    def __str__(self):
        return "%s the waiter at %s" % (self.name, self.restaurant)

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
74HC595BQ,115 1 NXP Semiconductors 74HC(T)595 - 8-bit serial-in, serial or parallel-out shift register with output latches; 3-state QFN 16-Pin
$0.41 查看
CMWX1ZZABZ-078 1 Murata Manufacturing Co Ltd LORA MODULE

ECAD模型

下載ECAD模型
$16.04 查看
24LC256-I/ST 1 Microchip Technology Inc 32K X 8 I2C/2-WIRE SERIAL EEPROM, PDSO8, 4.40 MM, PLASTIC, TSSOP-8

ECAD模型

下載ECAD模型
$1.05 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜