Python 没有Django模型的石墨烯Django?

Python 没有Django模型的石墨烯Django?,python,django,django-models,graphene-python,Python,Django,Django Models,Graphene Python,我已经成功地使用Graphene Django成功地构建了几个GraphQL调用。在所有这些情况下,我全部或部分填充了Django模型,然后返回我填充的记录 现在我想返回一些我不想存储在Django模型中的数据。这可能与石墨烯有关吗 Robert将Django模型映射到GraphQL时,它会根据Django模型的内省创建一个具有GraphQL对象类型的新模型。。 没有什么能阻止您将此模型与普通GraphQL对象类型相结合,或从其他第三方持久性模型映射而来,Robert在评论中完美地回答了自己的问

我已经成功地使用Graphene Django成功地构建了几个GraphQL调用。在所有这些情况下,我全部或部分填充了Django模型,然后返回我填充的记录

现在我想返回一些我不想存储在Django模型中的数据。这可能与石墨烯有关吗


Robert

将Django模型映射到GraphQL时,它会根据Django模型的内省创建一个具有GraphQL对象类型的新模型。。
没有什么能阻止您将此模型与普通GraphQL对象类型相结合,或从其他第三方持久性模型映射而来,Robert在评论中完美地回答了自己的问题,我只想扩展他的解决方案

我的无数据库模型WordForm是自动生成的,无需将其存储在数据库中。我将其定义为Django模型,如下所示:

from django.db import models
class WordForm(models.Model):
    value = models.CharField(max_length=100)
    attributes = models.CharField(max_length=100)
在模式中,我定义了如下节点和查询:

class WordFormNode(DjangoObjectType):
    class Meta:
        model = WordForm
        interfaces = (relay.Node, )

class Query(AbstractType):
    word_forms = List(WordFormNode,query=String(),some_id=String())

    def resolve_word_forms(self, args, context, info):
        query= args['query']
        some_id = from_global_id(args['some_id'])[1]
        word_forms = []
        # some logic to make WordForm objects with
        # WordForm(value=value,attributes=attributes),
        # then append them to list word_forms
        return word_forms

您可以向列表中传递任意数量的参数,并以resolve\u word\u表单访问这些参数。

由于数据不会存在于数据库中,它们应该存在于何处?是否由外部资源获取?一根永久的绳子还是什么?请提供有关您的用例的更多详细信息。在一个用例中,数据将来自外部服务器。在另一个例子中,结果严格来说是逻辑的结果,而不是从Django DB表中查找的结果。我将使其通用化,以便每个人都能理解该方法。假设您需要一个名为“best_cities”的GraphQL查询。在类查询中,您可能会创建以下内容:best_cities=graphene.String(state_id=graphene.String()),在这里传入一个状态id,然后使用逻辑生成一个JSON字符串和响应。然后,您只需在下面添加:def resolve_best_cities(self、args、context、info):在这个函数中添加自定义逻辑。根本不使用Django模型。@Robert_,如果我想添加graphql变异,而不是不映射到Django模型的查询,我会这样做。这是等效的吗?我非常喜欢这个答案,因为它具有使用本机模型字段生成graphql字段的优点,但是我得到了“graphql.error.located_error.GraphQLLocatedError:resolve_word_forms()得到了一个意外的关键字参数'some_id'。我使用参数格式(root,info,**kwargs)解决了这个问题