【发布时间】:2022-01-20 02:53:20
【问题描述】:
我想做一个只显示 variant_view_configuration 字段的查询。我该如何解决这个问题?如果我这样写(返回 User.objects.get(pk=instance.id).variant_view_configuration),它会给我一个错误 - 但我只需要 variant_view_configuration
class User(AbstractUser):
variant_view_configuration = ArrayField(models.CharField(max_length=200), default=list, blank=True)
class UserQueries(object):
user_variant_view_preference = graphene.Field(UserNode, id=graphene.ID(required=True))
def resolve_user_variant_view_preference(self, info, id):
instance = Node.get_node_from_global_id(info, id, only_type=UserNode)
if not instance:
raise ApplicationError.general.not_found(id)
return User.objects.get(pk=instance.id).variant_view_configuration
GraphQL 查询:
QUERY = """
query Test($id: ID!) {
userVariantViewPreference(id: $id) {
variantViewConfiguration
}
}
"""
def test_user_variant_preference(graphql_request_maker):
user = User.objects.create(
username='username12',
email='btestare@example.com',
variant_view_configuration=["colors[0].sizes[0].size", "details.country_of_origin"]
)
data, err = graphql_request_maker.make(
QUERY,
{
"id": to_global_id('UserNode', user.id)
}
)
所以,正如我所说,我想要一个仅返回特定用户 ID 的 variant_view_configuration 的查询。
我是 django 和 graphql 的新手,请解释一下我是如何做到的。 谢谢!
【问题讨论】:
-
如果问题是您不想显示用户模型的其他字段,您可以简单地使用
return User.objects.filter(pk=instance.id).only('variant_view_configuration') -
问题不是查询集,是你的
user_variant_view_preference = graphene.Field你必须使用user_variant_view_preference = graphene.List因为你要返回一个对象列表 -
错误信息是什么意思?
标签: django django-models graphql graphene-python graphene-django