Python 无法获取要在my QuerySelectField-Flask中显示的不同值

Python 无法获取要在my QuerySelectField-Flask中显示的不同值,python,flask,sqlalchemy,flask-sqlalchemy,flask-wtforms,Python,Flask,Sqlalchemy,Flask Sqlalchemy,Flask Wtforms,这是我的模特 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}',

这是我的模特

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
这是我的表格

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:Class'sqlalchemy.util.\u collections.result'没有被映射

我要做的是显示与我的类别不同的值。父

我知道我必须返回一个带有查询工厂的表,而不仅仅是一列,但在本例中,我返回的是一个带有两列的表

该错误是否由于“新表”未映射到my models.py中


有什么解决办法的建议吗?

对于那些好奇的人,我的解决办法是

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))

我基本上是按父类别分组的,使用count函数作为聚合函数。这不是最好的解决办法,因为在我的下拉菜单中,选择的ID将是计数

无法在QuerySelectfield中选择模型中的细节,只能进行其他筛选(filter或filter_by)。看看我是怎么解决的。基本上,我创建了一个带有特定代码的自定义QuerySelectField来删除重复项。