Как получить список всех тегов от Tagulous в Django Graphene - PullRequest
0 голосов
/ 23 декабря 2018

Это моя модель:

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 работал, и я мог получить список всех моих тегов?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Вы можете получить все теги для определенного типа модели и TagField() на модели, подобной этой (с TagField, равной tags в данном случае):

all_tags = FeedSource.tags.tag_model.objects.all()
0 голосов
/ 12 января 2019

По умолчанию Tagulous автоматически генерирует уникальную модель тега каждый раз, когда вы используете TagField - здесь она сгенерировала модель Tagulous_FeedSource_tags (также доступную как FeedSource.tags.tag_model), поэтому вы ссылаетесь на абстрактную модель вместоконкретная модель тега для вашего поля.

Основываясь на моем понимании графена, я предполагаю, что он недоволен тем, что вы используете базовый класс, и ожидает, что вы будете использовать сам класс - поэтому, хотя я не пробовал этогоЯ думаю, что должно работать следующее:

class TagType(DjangoObjectType):
    class Meta:
        model = FeedSource.tags.tag_model
        ...
...