Объект типа 'Query' не поддерживает сериализацию в формате JSON - PullRequest
0 голосов
/ 17 февраля 2019

Это мой route.py

@app.route('/test', methods=['POST', 'GET'])
def test():
    # form = BrandChoice()
    # email = request.form['email']
    # name = request.form['name']
    choice = request.form['choice']
    print(choice)
    q = session.query(Brand.brand).filter(Brand.pid == choice)
    print(q)
    return jsonify({'choice': q })

А это мой файл test.js

$(document).ready(function() {
$('form').on('submit', function(event) {
    $.ajax({
        data : {
            name : $('#nameInput').val(),
            email : $('#emailInput').val(),
            choice : $('#brandInput').val()
        },
        type : 'POST',
        url : '/test'
    })
    .done(function(data) {
        if (data.error) {
            $('#errorAlert').text(data.error).show();
            $('#successAlert').hide();
        }
        else {
            $('#errorAlert').text(data.choice).show();
            $('#successAlert').text(data.name).show();
            // $('#errorAlert').hide();
        }
    });
    event.preventDefault();
});

});

Я не совсем понялпочему я не могу получить результат запроса для отображения.Если бы я, например, заменил свой 'q' на имя, это работало бы так, как задумано.

Как мне вернуть результат запроса, чтобы я мог отобразить его в сообщении об ошибке?

1 Ответ

0 голосов
/ 22 февраля 2019

Спасибо за помощь всем.Я понимаю проблему с моим кодом прямо сейчас.q это объект Query.Я даже не выполнил запрос.

    type_pid = session.query(LenSize.type_pid).filter(LenSize.pid == choice)
    type_pid_result = session.execute(type_pid)
    type_pid_count = type_pid_result.first()[0]
    print(type_pid_count)
    q = session.query(Type.initial).filter(Type.pid == type_pid_count)
    print(q)
    result = session.execute(q)
    print(result)
    id_count = result.first()[0]
    print(id_count)
    return jsonify({'name': id_count})

Внесенные мною поправки заключались в том, чтобы выполнить мой запрос, а взамен я бы получил прокси-сервер результата.Примените метод first () для получения желаемого результата.Этот вывод был сериализуемым в формате JSON.В мой файл js не было внесено никаких изменений.Упрощенная версия моей коррекции приведена ниже.Надеюсь, это поможет!

q = session.query(Model.id).filter(Model.pid == choice)
result = session.execute(q)
row_id = result.first()[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...