具有模型绑定(Postgres)的石墨烯查询(烧瓶)

时间:2021-03-09 06:14:58

标签: graphql

4

我想从客户端传递JSON,在服务器端传递JSON,然后根据JSON内容响应客户端。 我想通过从 Json(graphql) 传递多个参数来搜索或过滤数据。

我知道,在通常使用 Python/Flask 的情况下,我需要使用 Graphene/GraphQL,其中我需要用模型描述 ObjectType 后代,绑定在后代的 Meta 类中。然后我应该将这个类作为一个类字段包含在 Query 类中。

这是通过石墨烯进行模型数据通信的方式。

如何解决绕过 JSON 对象数据为搜索查询建模的任务?

class Preferences(SQLAlchemyObjectType):
class Meta:
    model = PreferencesModel
    interfaces = (relay.Node, )

类查询(graphene.ObjectType): 节点=relay.Node.Field()

user_mother_tongue = graphene.Field(lambda: graphene.List(Preferences),user_mother_tongue=graphene.String())
def resolve_user_mother_tongue(self, info, **kwargs):
    print("info",info)

    query = Preferences.get_query(info)
    print("query",query)
    
    name = kwargs.get("user_mother_tongue")

    return query.filter(PreferencesModel.user_mother_tongue == name).all()

user_gender = graphene.Field(lambda: graphene.List(Preferences), user_gender=graphene.String())
def resolve_user_gender(self, info, **kwargs):
    query = Preferences.get_query(info)
    user_gender = kwargs.get("user_gender")
    return query.filter(PreferencesModel.user_gender == user_gender).all()

我想要单一功能(性别,母语)而不是这个。 这些都是json或者graphql查询的数据。

来自客户端的请求: {"user_id":160,"user_gender":"女性","pref_min_age":null,"pref_min_height":null,"pref_max_age":null,"pref_max_height":null,"pref_marital_status":null,"pref_religion":null ,"pref_caste":null,"pref_sub_caste":null,"pref_gotra":null, "pref_mother_tongue":"Hindi","pref_appearance":null,"pref_body_type":null,"pref_eye_color":null,"pref_hair_color":null ,"pref_eye_sight":null,"pref_disability":null,"pref_eating_habits":null,"pref_religious_beliefs":null,"pref_astrological_status":null,"pref_highest_edu":null,"pref_residential_status":null,":pref_occupation" pref_annual_income":null,"pref_family_values":null} 需要使用graphql进行过滤。

我尝试了以下搜索:

search = graphene.Field(lambda: graphene.List(Preferences),search=graphene.String()) def resolve_search(self, info, **args): search= args.get("search") # 搜索查询 如果搜索不是无: Preferences_query = Preferences.get_query(search) 打印(“===>搜索<====”,Preferences_query)

    # Query Prefrences
    result = Preferences_query.filter((PreferencesModel.firstname.contains(search)) |
                                  (PreferencesModel.user_gotra.contains(search))).all()
    return result  

0 个答案:

没有答案