Graphene-Django 和模型属性
Graphene-Django and Model Properties
假定 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 应用程序中)?
在配置文件的架构对象中,您可以添加一个带有源的字符串字段:
class Profile(DjangoObjectType):
profile_name = graphene.String(source='profile_name')
class Meta:
model = ProfileModel
interfaces = (relay.Node, )
假定 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 应用程序中)?
在配置文件的架构对象中,您可以添加一个带有源的字符串字段:
class Profile(DjangoObjectType):
profile_name = graphene.String(source='profile_name')
class Meta:
model = ProfileModel
interfaces = (relay.Node, )