Django - ORM 一對(duì)多,多對(duì)多操作

django中的一對(duì)一,一對(duì)多,多對(duì)多

http://www.cnblogs.com/pythonxiaohu/p/5814247.html

http://luozhaoyu.iteye.com/blog/1510635

http://www.cnblogs.com/yaabb163/p/6357313.html (詳細(xì))


一對(duì)多或者多對(duì)一

這種關(guān)系可以使用外鍵來解決。


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

class UserGroup(models.Model):
    name = models.CharField(max_length=32)

Class UserInfo(models.Model):
    username = model.CharField(max_length=16)
    u2g = models.ManyToManyField(UserGroup)

一對(duì)多的時(shí)候,查詢一對(duì)應(yīng)的多,創(chuàng)建等可以通過 xxx_set

models.py:

class Album(models.Model):
    artist = models.CharField(max_length=16)
    album_title = models.CharField(max_length=8)
    album_logo = models.CharField(max_length=512)

    def __str__(self):
        return self.album_title
    def __unicode__(self):
        return self.album_title

class Song(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE) # 這個(gè)是級(jí)聯(lián),刪除的時(shí)候有用
    name = models.CharField(max_length="16")
===== 

views.py:

# 查詢

album.song_set.all()    # 查出此album的所有關(guān)聯(lián)的song
<QuerySet [<Song: Song object>]>

# 創(chuàng)建

album.song_set.create(name="xxx")  # album這個(gè)外鍵可以不填寫,因?yàn)槭谴藙?chuàng)建的

注意:song的實(shí)例得到之后,song.album (也就是通過外鍵屬性,得到的是一個(gè)外鍵Model的一個(gè)對(duì)象)

song.album
<Album: Red>

注意:也可以在template中直接使用_set,就不必在views中去查xxx_set了。

個(gè)數(shù):
album.song_set.count() # 得到多少個(gè)


經(jīng)驗(yàn)

1.一對(duì)多或者多對(duì)一,都是在多那里做外鍵:

class Book(models.Model):  
    title = models.CharField(max_length=100)  
    authors = models.ManyToManyField(Author)  
    publisher = models.ForeignKey(Publisher)  
    publication_date = models.DateField()  

一個(gè)出版社可以出多本書。在書的類中添加外鍵。

2.思考是否是多對(duì)多

一本書有多個(gè)作者,那么一個(gè)作者可以寫多本書。

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容