如何从 Django Graphene 中的 Tagulous 获取所有标签的列表
How to get a list of all tags from Tagulous in Django Graphene
这是我的模型:
class FeedSource(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
feed = models.ForeignKey(Feed, on_delete=models.CASCADE) #FIXME: Deletion
title = models.CharField(max_length=200)
show_on_frontpage = models.BooleanField(default=True)
tags = TagField()
def __str__(self):
return self.title
class Meta:
ordering = ["title"]
unique_together = (("user", "feed"))
这是我尝试获取 schema.py 中的所有标签:
class TagType(DjangoObjectType):
class Meta:
model = tagulous.models.TagModel
# model = FeedSource
interfaces = (graphene.relay.Node,)
class Query(graphene.ObjectType):
all_tags = graphene.List(TagType, username=graphene.String(required=True))
def resolve_all_tags(self, info, **kwargs):
tags = FeedSource.tags.tag_model.objects.all()
return tags
在 graphiql 中我得到错误:Expected value of type \"TagType\" but got: Tagulous_FeedSource_tags."
我如何设置模型以便 GraphQL 工作并且我可以检索我所有标签的列表?
默认情况下,Tagulous 会在您每次使用 TagField
时自动生成一个唯一的标签模型 - 这里它已生成模型 Tagulous_FeedSource_tags
(也可以作为 FeedSource.tags.tag_model
访问),因此您'为您的领域引用抽象模型而不是特定标记模型。
根据我对石墨烯的理解,我猜它对你使用基数 class 并不满意,并希望你使用 class 本身 - 所以虽然我自己没有尝试过,我认为以下应该有效:
class TagType(DjangoObjectType):
class Meta:
model = FeedSource.tags.tag_model
...
您可以获得特定模型类型的所有标签,并在模型上 TagField()
像这样(在这种情况下 TagField 为 tags
):
all_tags = FeedSource.tags.tag_model.objects.all()
这是我的模型:
class FeedSource(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
feed = models.ForeignKey(Feed, on_delete=models.CASCADE) #FIXME: Deletion
title = models.CharField(max_length=200)
show_on_frontpage = models.BooleanField(default=True)
tags = TagField()
def __str__(self):
return self.title
class Meta:
ordering = ["title"]
unique_together = (("user", "feed"))
这是我尝试获取 schema.py 中的所有标签:
class TagType(DjangoObjectType):
class Meta:
model = tagulous.models.TagModel
# model = FeedSource
interfaces = (graphene.relay.Node,)
class Query(graphene.ObjectType):
all_tags = graphene.List(TagType, username=graphene.String(required=True))
def resolve_all_tags(self, info, **kwargs):
tags = FeedSource.tags.tag_model.objects.all()
return tags
在 graphiql 中我得到错误:Expected value of type \"TagType\" but got: Tagulous_FeedSource_tags."
我如何设置模型以便 GraphQL 工作并且我可以检索我所有标签的列表?
默认情况下,Tagulous 会在您每次使用 TagField
时自动生成一个唯一的标签模型 - 这里它已生成模型 Tagulous_FeedSource_tags
(也可以作为 FeedSource.tags.tag_model
访问),因此您'为您的领域引用抽象模型而不是特定标记模型。
根据我对石墨烯的理解,我猜它对你使用基数 class 并不满意,并希望你使用 class 本身 - 所以虽然我自己没有尝试过,我认为以下应该有效:
class TagType(DjangoObjectType):
class Meta:
model = FeedSource.tags.tag_model
...
您可以获得特定模型类型的所有标签,并在模型上 TagField()
像这样(在这种情况下 TagField 为 tags
):
all_tags = FeedSource.tags.tag_model.objects.all()