石墨烯Django没有Django模型?

时间:2017-08-21 05:06:55

标签: python django graphene-python

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

现在我有一种情况,我希望返回一些我不希望存储在Django模型中的数据。这可能与石墨烯有关吗?

罗伯特

2 个答案:

答案 0 :(得分:2)

Robert_LY在评论中完美地回答了他自己的问题,我只想扩展他的解决方案。

我的无数据库模型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

您可以将任意数量的参数传递给List,并在resolve_word_forms中访问它们。

答案 1 :(得分:0)

当您将Django模型映射到GraphQL时,它会根据Django模型的内省创建一个具有GraphQL对象类型的新模型。 并且没有什么能阻止您将此模型与纯GraphQL对象类型相结合,或者从其他第三方持久性模型映射