下面回到首頁中,使用一個賬戶登錄,你肯定已經(jīng)注意到了這里的內(nèi)容:

iOS培訓,Swift培訓,蘋果開發(fā)培訓,移動開發(fā)培訓

沒錯,現(xiàn)在都是寫死的一些固定信息,其中分享數(shù)量很容易就可以獲取,只需要修改首頁模板:

<p class="text-muted">我已經(jīng)分享<span class="text-danger">{{ current_user.posts.count() }}</span>條心情</p>

這樣就可以顯示,但是關(guān)注和被關(guān)注顯然就不是這么簡單了,首先要思考一下,一個人可以關(guān)注多個用戶,而一個用戶也可以被多個人關(guān)注,所以,這很明顯是一個多對多的關(guān)系,而同時,無論是關(guān)注用戶還是被別人關(guān)注,顯然都是針對的用戶表,所以,這是一個典型的單表自關(guān)聯(lián)的多對多關(guān)系,而多對多就需要使用關(guān)聯(lián)表進行連接,下面創(chuàng)建一個關(guān)聯(lián)表(models/Follow.py):

from .. import dbfrom datetime import datetimeclass Follow(db.Model):
    __tablename__="follows"
    follorer_id=db.Column(db.Integer,db.ForeignKey("users.id"),primary_key=True)
    follored_id=db.Column(db.Integer,db.ForeignKey("users.id"),primary_key=True)
    createtime=db.Column(db.DateTime,default=datetime.utcnow)

然而這時候,SQLAlchemy框架是無法直接使用的,如果要使用這個關(guān)聯(lián)表,需要把它拆解為兩個標準的一對多關(guān)系(User.py):

 #關(guān)注我的followers = db.relationship("Follow",foreign_keys=[Follow.followed_id],backref=db.backref("followed",lazy='joined'),lazy="dynamic",cascade="all,delete-orphan")#我關(guān)注的followed = db.relationship("Follow", foreign_keys=[Follow.follower_id], backref=db.backref("follower", lazy='joined'), lazy="dynamic",cascade="all,delete-orphan")

看到這個,有必要解釋一下了:

  1. foreign_keys很明顯是表示外鍵,因為followers和followed都是與Follow表進行關(guān)聯(lián),為了消除歧義,必須使用foreign指定特定外鍵。

  2. backref的作用是回引Follow模型,即即可從用戶查詢F

    網(wǎng)友評論