鍍金池/ 問答/Python  Linux/ flask_restful 添加字段問題

flask_restful 添加字段問題

QaAnswer 表中有一個本表中的字段a_answerid,在json返回的時候我想在 QaAnswer 中增加一個字段不知道該怎么增加

class QaAnswer(db.Model):
    __tablename__ = 'qa_answer'

    id = db.Column(db.Integer, primary_key=True)
    a_questionid = db.Column(db.Integer, nullable=False)
    a_answerid = db.Column(db.Integer)
    a_respondcontent = db.Column(db.String(255), nullable=False)
    a_createtime = db.Column(db.DateTime, nullable=False)
    a_likecount = db.Column(db.Integer)
    a_isshow = db.Column(db.Integer)
    a_userid = db.Column(db.Integer, nullable=False)

我想返回下面樣式的json

                "anwserid": 3,
                "respondcontent": "11111",
                "content": "不對不對你",
                "createtime": "2018-07-20 12:03:07",
                "likecount": "0",
                "userid": 9449

增加一個字段,不知道如何操作

回答
編輯回答
蟲児飛

如果你使用 flask-sqlalchemy 來操作數(shù)據(jù)庫的話,實(shí)現(xiàn)你的方法有一些難度,不過也是用方法的。

你可以看看我的這篇文章基于 oracle 的 flask 項(xiàng)目(五)——報表下載中的使 sqlalchemy 數(shù)據(jù) json 化 這一部分內(nèi)容。


1、開始畫重點(diǎn),我給你的例子就是對讓一個 flask-sqlalchemy 對象 json 化,記住是讓一個flask-sqlalchemy 對象,不是兩個也不是多個,僅僅是一個。

所以,你增加一個字段,你就得在你的 models 的類對象中加一個屬性, 根據(jù)你的例子,你需要寫如下代碼

class QaAnswer(db.Model):
    __tablename__ = 'qa_answer'

    id = db.Column(db.Integer, primary_key=True)
    a_questionid = db.Column(db.Integer, nullable=False)
    a_answerid = db.Column(db.Integer)
    a_respondcontent = db.Column(db.String(255), nullable=False)
    a_createtime = db.Column(db.DateTime, nullable=False)
    a_likecount = db.Column(db.Integer)
    a_isshow = db.Column(db.Integer)
    a_userid = db.Column(db.Integer, nullable=False)
    
    @proprety
    def content()
        pass

話題引到如此,你可以忽略我的文章的內(nèi)容,不要再想如何使一個 flask-sqlalchemy 對象 json 化

2、根據(jù)你的代碼的書寫格式,I 服了 U。你的類對象里都一個 a_ 的前綴,但是你的 json 對象里是沒有的。這需要你處理一下。
代碼如下:

class QaAnswer(db.Model):
    __tablename__ = 'qa_answer'

    id = db.Column(db.Integer, primary_key=True)
    a_questionid = db.Column(db.Integer, nullable=False)
    a_answerid = db.Column(db.Integer)
    a_respondcontent = db.Column(db.String(255), nullable=False)
    a_createtime = db.Column(db.DateTime, nullable=False)
    a_likecount = db.Column(db.Integer)
    a_isshow = db.Column(db.Integer)
    a_userid = db.Column(db.Integer, nullable=False)
    
    @classmethod
    def to_json():
        "anwserid": 變量內(nèi)容,
        "respondcontent": 變量內(nèi)容,
        "content": 變量內(nèi)容,
        "createtime": 變量內(nèi)容,
        "likecount": 變量內(nèi)容,
        "userid": 變量內(nèi)容

所有的變量內(nèi)容,在你的類里都定義好。
我只能幫你到此種地步了,其它的,已經(jīng)超出我的知識儲備,獻(xiàn)丑了。

2017年7月30日 19:19