Интерфейс для 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

Вернуться на верх