Я относительный новичок в GraphQL, я пытаюсь сделать такой запрос
{
user(username: "Jon") {
name
last_lame
username
posts(in_draft : true) {
title
text
in_draft
update_at
}
}
}
Я хочу отфильтровать список сообщений, которые у пользователя есть в черновике
Единственный способ сделать запрос - это связать модели, но без возможности фильтрации сообщений в черновике. Один ко многим
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
last_lame = Column(String)
username = Column(String)
class Post(Base):
__tablename__ = 'post'
id = Column(Integer, primary_key=True)
title = Column(String)
text = Column(String)
in_draft = Column(Boolean)
post_id = Column(Integer, ForeignKey('user.id'))
posts = relationship("User", backref='posts')
В этой связи я показываю узел сообщений с помощью "backref = 'posts'"
Мои объекты:
class User(SQLAlchemyObjectType):
"""User Object."""
class Meta:
model = UserModel
interfaces = (relay.Node, )
class Post(SQLAlchemyObjectType):
"""Post Object."""
class Meta:
model = PostModel
# interfaces = (relay.Node, )
Запрос:
class Query(graphene.ObjectType):
user = graphene.Field(lambda: User, username=graphene.String())
def resolve_user(self, info, username):
query = User.get_query(info)
return query.filter(UserModel.username == username).first()
Я хочу, чтобы запрос сообщений принадлежал пользователю
posts = graphene.List(lambda: Post, in_draft=graphene.Boolean())
def resolve_posts(self, info, in_draft):
query = Post.get_query(info)
return query.filter(PostModel.in_draft == in_draft).all()
schema = graphene.Schema(
query=Query,
types=[User, Post])
Есть идея или предложение?