Django模型(三)

知識(shí)要點(diǎn):

表關(guān)系的實(shí)現(xiàn)

一對(duì)多表關(guān)系

在Mysql中一對(duì)多是通過(guò)外鍵實(shí)現(xiàn)的,在django模型中通過(guò)ForeignKeyfield類型實(shí)現(xiàn)。

一對(duì)一表關(guān)系

在Mysql中一對(duì)一是通過(guò)外鍵加唯一鍵實(shí)現(xiàn)的,在django模型中通過(guò)OneToOneField類型實(shí)現(xiàn)。

多對(duì)多表關(guān)系

在Mysql中多對(duì)多是通過(guò)中間表外鍵加聯(lián)合唯一鍵實(shí)現(xiàn)的,在django模型中通過(guò)ManyToManyField類型實(shí)現(xiàn)。中間表模型會(huì)自動(dòng)幫我們創(chuàng)建好筋蓖。

例子:

class Department(models.Model):
    d_id = models.AutoField(primary_key=True)
    d_name = models.CharField(max_length=30)
    def __str__(self):
        return 'Department<d_id=%s,d_name=%s>'%(
            self.d_id,self.d_name
        )

class Student(models.Model):
    s_id = models.AutoField(primary_key=True)
    s_name = models.CharField(max_length=30)
    department = models.ForeignKey('Department')
    course = models.ManyToManyField('Course')
    def __str__(self):
        return 'Student<s_id=%s,s_name=%s>'%(
            self.s_id,self.s_name
        )


class Course(models.Model):
    c_id = models.AutoField(primary_key=True)
    c_name = models.CharField(max_length=30)
    def __str__(self):
        return 'Course<c_id=%s,c_name=%s>'%(
            self.c_id,self.c_name
        )

class Stu_detail(models.Model):
    s_id = models.OneToOneField('Student')
    age = models.IntegerField()
    gender = models.BooleanField(default=1)
    country = models.CharField(max_length=30,null=True)
    def __str__(self):
        return 'Stu_detail<s_id=%s,age=%s,gender=%s,country=%s>'%(
            self.s_id,self.age,self.gender,self.country
        )

關(guān)系表中數(shù)據(jù)的操作

from .models import Department,Student,Course
def add_info(request):
    # d1 = Department(d_name='CC')
    # d1.save()
    # 一對(duì)多關(guān)系加內(nèi)容
    # s1 = Student(s_name='xiaoming')
    # s1.department = d1
    # s1.save()
    # 多對(duì)多關(guān)系添加內(nèi)容
    # c1 = Course(c_name='python')
    # s1 = Student.objects.first()
    # c1.save()
    # s1.course.add(c1)
    return HttpResponse('添加數(shù)據(jù)成功')
    
def search_info(request):
    rs = Student.objects.all()[0]
    # 一對(duì)多的查詢
    print(rs.department)
    # 多對(duì)多的正向查詢
    print(rs.course.all())
    cs = Course.objects.first()
    # 多對(duì)多反向查詢
    print(cs.student_set.all())
    return HttpResponse('查詢數(shù)據(jù)成功')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市退敦,隨后出現(xiàn)的幾起案子粘咖,更是在濱河造成了極大的恐慌,老刑警劉巖侈百,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓮下,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡钝域,警方通過(guò)查閱死者的電腦和手機(jī)讽坏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)例证,“玉大人路呜,你說(shuō)我怎么就攤上這事≈郑” “怎么了胀葱?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)笙蒙。 經(jīng)常有香客問(wèn)我抵屿,道長(zhǎng),這世上最難降的妖魔是什么捅位? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任轧葛,我火速辦了婚禮搂抒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尿扯。我一直安慰自己求晶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布衷笋。 她就那樣靜靜地躺著芳杏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪右莱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天档插,我揣著相機(jī)與錄音慢蜓,去河邊找鬼。 笑死郭膛,一個(gè)胖子當(dāng)著我的面吹牛晨抡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播则剃,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耘柱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了棍现?” 一聲冷哼從身側(cè)響起调煎,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎己肮,沒(méi)想到半個(gè)月后士袄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谎僻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年娄柳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艘绍。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赤拒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诱鞠,到底是詐尸還是另有隱情挎挖,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布航夺,位于F島的核電站肋乍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏敷存。R本人自食惡果不足惜墓造,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一堪伍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧觅闽,春花似錦帝雇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至孕锄,卻和暖如春吮廉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背畸肆。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工宦芦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轴脐。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓调卑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親大咱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恬涧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容