Как использовать запрос SELECT на основе параметра метода в Flask restplus Api? - PullRequest
0 голосов
/ 11 марта 2020

Я хочу обработать запрос GET в моем Flask REST API. Запрос будет содержать параметр List, и я использую его для типичного запроса GET:

https://localhost:5000/organisation?List=1

этот запрос вернет всю Organisation информацию о модели. Organisation - это класс Model для таблицы моей базы данных MySQL (peewee).

Я хочу ввести в запрос параметр PrivenceId и вернет всю информацию Organisation, где информация о модели Organisation.PrivencedId == PrivenceId, но я сталкиваюсь со следующей ошибкой: TypeError: 'Organisation' object is not iterable

мой код (OrganisationController.py файл):

from flask_restplus import Resource, reqparse
from Models.Organisation import Organisation
from flask import request

# Define parser and request args
parser = reqparse.RequestParser()
parser.add_argument('List', type=int)
parser.add_argument('ProvinceId', type=int)

class List(Resource):

    def get(self):

        args = parser.parse_args()
        List = args['List']
        ProvinceId = args['ProvinceId']      

        if  List :
            Organisations = Organisation.select() 

            Ls = [dict (
                 ID = c.ID,
                 Title = c.Title,
                 Code = c. Code,
                 OrgEnumId = c.OrgEnumId,
                 ProvinceId = c.ProvinceId, 
                 CityId = c.CityId,
                 Address = c.Address,
                 Phone = c.Phone,
                 ) for c in Organisations
                ]

            return dict(Organisations = Ls)

         elif (ProvinceId) :
            Organisations = Organisation.select().where
                             (
                             Organisation.ProvinceId ==args['ProvinceId']
                             ).get()

            Ls = [dict (
                 ID = c.ID,
                 Title = c.Title,
                 Code = c. Code,
                 OrgEnumId = c.OrgEnumId,
                 ProvinceId = c.ProvinceId, 
                 CityId = c.CityId,
                 Address = c.Address,
                 Phone = c.Phone,
                 ) for c in Organisations
                ]


            return dict(Organisations = Ls)

и boot.py файл для запуска API:

from flask import Flask 
from flask_restplus import Api
from Controllers import OrganisationController


app = Flask(__name__)

api = Api(app)

api.add_resource(OrganisationController.List, '/organisation')


if __name__ == "__main__":

    app.run ('127.0.0.1', 5000, True)

Не могли бы вы мне помочь?

1 Ответ

0 голосов
/ 13 марта 2020

Я изменил эту строку моего кода и решил мою проблему:

Organisations = Organisation.select().where
                         (
                         Organisation.ProvinceId ==args['ProvinceId']
                         )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...