我有一些要在graphql查询中显示的Django模型通用关系字段。石墨烯是否支持通用类型?
class Attachment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
file = models.FileField(upload_to=user_directory_path)
class Aparto(models.Model):
agency = models.CharField(max_length=100, default='Default')
features = models.TextField()
attachments = GenericRelation(Attachment)
石墨烯类:
class ApartoType(DjangoObjectType):
class Meta:
model = Aparto
class Query(graphene.ObjectType):
all = graphene.List(ApartoType)
def resolve_all(self, info, **kwargs):
return Aparto.objects.all()
schema = graphene.Schema(query=Query)
我希望附件字段出现在graphql查询结果中。仅显示代理商和功能。
答案 0 :(得分:1)
您需要向架构公开Attachment
。石墨烯需要type
才能用于任何相关领域,因此它们也需要公开。
此外,您可能想解析相关的attachments
,因此您将要为其添加解析器。
在您的石墨烯类中,尝试:
class AttachmentType(DjangoObjectType):
class Meta:
model = Attachment
class ApartoType(DjangoObjectType):
class Meta:
model = Aparto
attachments = graphene.List(AttachmentType)
def resolve_attachments(root, info):
return root.attachments.all()