日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django框架中的模型

發(fā)布時(shí)間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django框架中的模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 關(guān)聯(lián)關(guān)系
      • Many-to-one relationships
      • Many-to-many relationships?
    • django學(xué)習(xí)——model中的get和filter方法的區(qū)別

模型
模型是您的數(shù)據(jù)唯一而且準(zhǔn)確的信息來源。它包含您正在儲(chǔ)存的數(shù)據(jù)的重要字段和行為。一般來說,每一個(gè)模型都映射一個(gè)數(shù)據(jù)庫表。

基礎(chǔ):

  • 每個(gè)模型都是一個(gè) Python 的類,這些類繼承 django.db.models.Model
  • 模型類的每個(gè)屬性都相當(dāng)于一個(gè)數(shù)據(jù)庫的字段。
  • 綜上訴說,Django 給你一個(gè)自動(dòng)生成訪問數(shù)據(jù)庫的 API;請(qǐng)參閱 進(jìn)行查詢。

關(guān)聯(lián)關(guān)系

Many-to-one relationships

定義一個(gè)多對(duì)一的關(guān)聯(lián)關(guān)系,使用 django.db.models.ForeignKey 類。就和其他 Field 字段類型一樣,只需要在你模型中添加一個(gè)值為該類的屬性。

from django.db import models# Create your models here. from django.db import models#多對(duì)一關(guān)系(如果一個(gè) Car 模型 有一個(gè)制造者 Manufacturer --就是說一個(gè) Manufacturer 制造許多輛車,但是每輛車都屬于某個(gè)特定的制造者) class Manufacturer(models.Model):pass#.... class Car(models.Model):manufacturer = models.ForeignKey(Manufacturer,on_delete=models.CASCADE)#...

Many-to-many relationships?

定義一個(gè)多對(duì)多的關(guān)聯(lián)關(guān)系,使用 django.db.models.ManyToManyField 類。就和其他 Field 字段類型一樣,只需要在你模型中添加一個(gè)值為該類的屬性。

如果你只是想要一個(gè)類似于記錄披薩和配料之間混合和搭配的簡單多對(duì)多關(guān)系,標(biāo)準(zhǔn)的 ManyToManyField 就足夠你用了。然而,有的時(shí)候你可能會(huì)需要在兩個(gè)模型的關(guān)系中記錄更多的數(shù)據(jù)。

舉例來講,考慮一個(gè)需要跟蹤音樂人屬于哪個(gè)音樂組的應(yīng)用程序。在人和他們所在的組之間有一個(gè)多對(duì)多關(guān)系,你可以使用 ManyToManyField 來代表這個(gè)關(guān)系。然而,你想要記錄更多的信息在這樣的所屬關(guān)系當(dāng)中,比如你想要記錄某人是何時(shí)加入一個(gè)組的。

對(duì)于這些情況,Django允許你指定用于控制多對(duì)多關(guān)系的模型。你可以在中間模型當(dāng)中添加而外的字段。在實(shí)例化 ManyToManyField 的時(shí)候使用 through 參數(shù)指定多對(duì)多關(guān)系使用哪個(gè)中間模型。對(duì)于我們舉的音樂家的例子,代碼如下:

from django.db import modelsclass Person(models.Model):name = models.CharField(max_length=128)def __str__(self):return self.nameclass Group(models.Model):name = models.CharField(max_length=128)members = models.ManyToManyField(Person, through='Membership')def __str__(self):return self.nameclass Membership(models.Model):person = models.ForeignKey(Person, on_delete=models.CASCADE)group = models.ForeignKey(Group, on_delete=models.CASCADE)date_joined = models.DateField()invite_reason = models.CharField(max_length=64)

具體的參考:
官方文檔:(https://docs.djangoproject.com/zh-hans/2.1/topics/db/models/#automatic-primary-key-fields)

django學(xué)習(xí)——model中的get和filter方法的區(qū)別

django的get方法是從數(shù)據(jù)庫的取得一個(gè)匹配的結(jié)果,返回一個(gè)對(duì)象,如果記錄不存在的話,它會(huì)報(bào)錯(cuò)。

django的filter方法是從數(shù)據(jù)庫的取得匹配的結(jié)果,返回一個(gè)對(duì)象列表,如果記錄不存在的話,它會(huì)返回[]。

總結(jié)

以上是生活随笔為你收集整理的django框架中的模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。