Невозможно получить различные значения для отображения в моем QuerySelectField - Flask - PullRequest
0 голосов
/ 07 января 2019

Это мои models.py

class Categories(db.Model):
__tablename__ ='categories'
parent = db.Column(db.String, nullable = False)
child = db.Column(db.String)
pid = db.Column(db.Integer, primary_key = True)

def __repr__(self):
    return f"Categories('{self.parent}', '{self.child}', '{self.pid}')"

def __init__(self, parent, child, id):
    self.parent = parent
    self.child = child
    self.id = id

Это мой forms.py

existSelectParentField = QuerySelectField('Select Existing Categories',query_factory=parentcat_query, get_label= 'parent', description='Choose parent category')

Это мой запрос фабрики

def parentcat_query():
parentcat = session.query(db.func.count(Categories.child), 
Categories.parent).group_by(Categories.parent).all()
return parentcat

Но я получаю эту ошибку, sqlalchemy.orm.exc.UnmappedInstanceError: класс 'sqlalchemy.util._collections.result' не сопоставлен

Я хотел бы отобразить отличные значения от моего Categories.parent

Я понимаю, что должен возвращать таблицу с фабрикой запросов, а не просто столбец, но в этом случае я возвращаю таблицу с двумя столбцами.

Ошибка связана с тем, что эта «новая таблица» не была отображена в моих models.py?

Есть предложения по обходному пути?

1 Ответ

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

Для любопытных моя работа была

distinctParent = db.session.query(db.func.count(Categories.child), Categories.parent).group_by(Categories.parent).order_by(Categories.parent).all()
existSelectParentField = SelectField('Select Existing Categories', validators=[Optional()], choices=list(distinctParent))

Я по существу сгруппирован по родительским категориям с функцией подсчета в качестве агрегатной функции. Не лучшее решение, так как в моем выпадающем меню идентификатором выбора будет счет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...