我正在嘗試以一種可以為每個用戶創建的用戶的方式創建模型。到目前為止,我有一個用戶模型:
class User(db.Model):
__tablename__ = "usersTable"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(128), nullable=False)
password = db.Column(db.String(255), nullable=False)
active = db.Column(db.Boolean(), default=True, nullable=False)
created_date = db.Column(db.DateTime, default=func.now(), nullable=False)
這是我創建的用戶函式:
const createUser = (values) => {
const data = { refresh: window.localStorage.getItem('refreshToken') };
axios
.post(`${SERVICE_URL}/api/v1/auth/token/refresh`, data)
.then((res) => {
const config = { headers: {'Authorization': `Bearer ${res.data.access}`}};
axios
.post(`${SERVICE_URL}/api/v1/users`, values, config)
.then((res) => {
setRedirect(true);
})
.catch((err) => {
setRedirect(false);
setType('danger');
setText('Unable to create user. Does this username already exist?');
});
})
.catch((err) => {
setRedirect(true);
});
};
如何修改此模型,以便每個用戶都可以跟蹤他們創建的用戶?
我已經研究過創建了一個腌制的屬性,但是我認為這對于這個問題來說過于復雜了
uj5u.com熱心網友回復:
為了確保我做對了,您正在嘗試創建一個應用程式的用戶模型,您希望在其中跟蹤哪個用戶創建了哪個用戶?
您提到每個用戶都會跟蹤他們創建的用戶。
因此,我們可以添加一個額外的欄位來存盤哪個用戶創建了新用戶。該欄位可以是字串欄位,模型如下:
class User(db.Model):
__tablename__ = "usersTable"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(128), nullable=False, unique=True) # making username unique.
password = db.Column(db.String(255), nullable=False)
active = db.Column(db.Boolean(), default=True, nullable=False)
created_date = db.Column(db.DateTime, default=func.now(), nullable=False)
CreatedBy = db.Column(db.String(128), default="", nullable=False) # TO STORE THE USERNAME OF THE USER WHO CREATED THIS USER.
usersCreated = db.Column(db.ARRAY(db.String(128)), default=[])
現在假設您的應用程式中有一個頁面顯示用戶串列。單擊單個用戶按鈕后,我們將被重定向到顯示有關用戶資訊的頁面。因此,可以使用以下陳述句來獲取我們單擊的用戶創建的所有用戶的串列。
usersCreatedByThisPerson = User.query.filter_by(CreatedBy = <name of the person who was clicked on>).all()
這將回傳用戶模型的實體串列。
我不知道我是否回答了你的問題。在回答時必須假設很多事情。
如果我沒有回答你的問題,請告訴我。謝謝。
好的,所以根據您的評論編輯答案。
我們要做的是在模型中,我們將添加另一列來存盤由該用戶創建的所有用戶的用戶名。
我們將如何做?
在 POST Api 中,我們將發送這個、用戶名、密碼、CreatedBy,然后我們將相應地更新用戶表。
假設 json 是:
{
"username": usernameLatest,
"password": password,
"CreatedBy": usernameOld
}
現在,在 post API 中,我們將在 usersCreated 列中 username=usernameOld 的行中附加 usernameLatest。
所以在 post API 中,我們會做這樣的事情:
oldUserInstance = Users.query.filter_by(username=usernameOld).first() # since username is unique, we just want the first one.
list(oldUserInstance.usersCreated).append(usernameLatest)
通過這種方式,我們可以不斷更新由創建當前用戶的用戶創建的所有用戶。
讓我知道是否清楚。
謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/340907.html
標籤:Python 列表 目的 烧瓶 烧瓶-sqlalchemy
