Graphene-Django 和模型属性
Posted
技术标签:
【中文标题】Graphene-Django 和模型属性【英文标题】:Graphene-Django and Model Properties 【发布时间】:2017-08-15 06:41:33 【问题描述】:假设一个类似这样的 Django 模型:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.PROTECT)
name = models.CharField(max_length=255)
other_alias = models.CharField(blank=True,null=True,max_length=255)
@property
def profile_name(self):
if self.other_alias:
return self.other_alias
else:
return self.name
我在这个项目中使用了 Graphene-Django,并且我成功地创建了一个模式来描述 Profile 类型,并且可以通过 GraphQL 查询正确访问它。但是,我看不到任何方法可以使该属性也可用。
假设我应该从我的 Django 模型中删除所有属性样式的逻辑,而是只使用 GraphQL 和模型中的原始信息,然后在我使用 GraphQL 数据的地方执行该逻辑(例如. 在使用它的 React 应用程序中)?
【问题讨论】:
【参考方案1】:在 Profile 的 schema 对象中,您可以添加一个带有源的 String 字段:
class Profile(DjangoObjectType):
profile_name = graphene.String(source='profile_name')
class Meta:
model = ProfileModel
interfaces = (relay.Node, )
【讨论】:
这为我节省了很多时间。谢谢!以上是关于Graphene-Django 和模型属性的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Graphene-Django Relay 中的外键关系更新模型?
graphene-django:查询所有模型字段而不是请求的字段
如何使用 graphene-django 定义突变的自定义输出类型?