django基礎 --- 模型(連表操作)

models.py繼續(xù)上一篇

from django.db import models

#出版社信息表
class Publisher(models.Model):
    name = models.CharField(max_length=20)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)

    def __unicode__(self):
        return self.name

#作者表
class Auther(models.Model):
    name = models.CharField(max_length=30)
    email = models.EmailField()

    def __unicode__(self):
        return"%s %s"%(self.first_name,self.last_name)

#書籍表
class Books(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Auther)
    publisher = models.ForeignKey(Publisher)

    def __unicode__(self):
        return self.title

一對多 --- 增(ForeignKey)

1.先添加出版社和作者數(shù)據(jù)

單表添加數(shù)據(jù)見上一篇文章

書籍表中書籍和出版社是一對多關系,一本書只有一個出版社,一個出版社有多本書

2.添加書籍
添加書籍前,先把出版社查找出來,然后創(chuàng)建對應關系

p = Publisher.objects.get(name="Apress")
Books.objects.create(title="python django",publisher=p)

這里將出版社和書籍創(chuàng)建了關聯(lián)

多對多 --- 增(manytomany)

書籍和作者間是多對多關系,一本書有多個作者,一個作者有多本書,創(chuàng)建書籍對應關系前,先查找作者,然后添加到書籍作者中

u1 = Auther.objects.get(name="jack")
u2 = Auther.objects.get(name="jones")
b = Books.objects.get(title="python django")
b.authors.add(u1)
b.authors.add(u2)

這里為書籍添加了2個作者

一對多 --- 查

獲取某書籍的出版社:

Books.objects.get(title="python django").publisher

獲取某出版社的書籍(反查):

Publisher.objects.get(name="Apress").books_set.all()
#或
Books.objects.get(publisher__name="Apress")

多對多 --- 查

獲取某書籍的所有作者

Books.objects.get(title="python django").authors.all()

獲取書籍的作者名為jack的作者

Books.objects.get(title="python django").authors.filter(name="jack)

查詢一個作者的所有書籍(反查)

Auther.objects.get(name="jack").books_set.all()
#或
Books.objects.get(auther__name="jack")

注:在一對多和多對多中,正向查詢都是先查詢某一個值,然后根據(jù)該值得外鍵去查詢對應數(shù)據(jù),反向查詢先查詢需要查詢的數(shù)據(jù)然后使用表名+_set反向關聯(lián)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • ORM 映射關系:表名 <-------> 類名字段 <-------> 屬性表記錄 <------->類實例...
    lkning閱讀 534評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,036評論 25 709
  • 目錄 models.py文件內容如下 以下所有查詢及操作均基于此models.py實現(xiàn) 一、 基于對象的跨表查詢 ...
    CaiGuangyin閱讀 1,215評論 0 3
  • 小羅莊的冬天干癟蕭瑟。 大國媽像經(jīng)年被雨雪浸泡,又被風干的樹葉,蜷縮在沖村口的草垛上曬太陽。 生活就像這四九天,本...
    小潔w閱讀 567評論 0 2
  • 你的善良不想傷害任何一個人,正因為這樣你也傷害了所有人,甚至包括你自己! 只顧著心疼別人,而忘了心疼自己,為了誰破...
    季珊嘻嘻閱讀 337評論 5 2

友情鏈接更多精彩內容