Интерфейс для DjangoFilterConnectionField
У меня два класса
class RegisteredUser(graphene.ObjectType):
class Meta:
interfaces = (BaseClient, )
name = graphene.String()
group = graphene.String()
policy = graphene.Int()
event = graphene_django.filter.DjangoFilterConnectionField(AuthEvent, max_limit=15)
У меня есть еще один класс для пользователей, которые не подписались
class NonRegisteredUser(graphene.ObjectType):
class Meta:
interfaces = (BaseClient, )
name = graphene.String()
source = graphene.Int()
event = graphene_django.filter.DjangoFilterConnectionField(NonRegisteredEvent, max_limit=15)
Наконец, у нас есть класс BaseClient, который является общим интерфейсом для обоих вышеупомянутых классов
class BaseClient(graphene.Interface):
name = graphene.String()
events = graphene_django.filter.DjangoFilterConnectionField('NotSureWhatToAdd', max_limit=15)
@classmethod
def resolve_type(cls, instance, info):
if instance.type == 'RegisteredUser':
return RegisteredUser
return NonRegisteredUser
Теперь все работает нормально, если я запрашиваю поле "name", но не уверен, как мне заставить работать поле "events", поскольку оба поля имеют разные DjangoFilterConnectionField.
Привет, я не уверен в этом, потому что сам с этим не сталкивался. Но так как здесь нет ответов, я просто выложу это здесь. Я не думаю, что вам нужны вещи, которые отличаются в базовом интерфейсе. И я не думаю, что вам нужны вещи, которые являются общими в типах под-объектов.
Итак, это означает, что вы можете удалить
events = graphene_django.filter.DjangoFilterConnectionField('NotSureWhatToAdd', max_limit=15)
в BaseClient
и вы также можете, вероятно, удалить name = graphene.String() из двух подклассов.
Также я не уверен, что это намеренно, но, похоже, вы используете множественное число events в базе и единственное число event в классах objectType