Kishor Pawar
Kishor Pawar

Reputation: 3526

FieldError: Cannot resolve keyword 'is_active' into field

I get the above error, when I do following.

class UserViewSet(generics.ListCreateAPIView):
    """
    A viewset for viewing and editing user instances.
    """
    models = User
    serializer_class = UserSerializer
    queryset = User.objects.filter(is_active=1) # See this  

My model does contain is_active field, and serializer has fields = '__all__'.

Do I need to override get_queryset method?

EDIT:

Following works. EDIT not working now.

def get_queryset(self):
    return User.objects.filter(is_active=1)  

def get_queryset(self):
    return self.queryset.filter(is_active=1)  


def get_queryset(self):
    queryset = super(UserViewSet, self).get_queryset()
    return queryset.filter(is_active=1)

All three says Cannot resolve keyword 'is_active' into field.

P.S - Above all three were tried with queryset = User.objects.all()in class

Models.py

class User(models.Model):
    id = models.BigIntegerField(primary_key=True)
    login_id = models.CharField(unique=True, max_length=64, blank=True, null=True)
    is_active = models.CharField(max_length=1, blank=True, null=True)
    auth_type = models.ForeignKey(AuthType, models.DO_NOTHING)
    user_type = models.ForeignKey('UserType', models.DO_NOTHING)
    user_org = models.ForeignKey('Organization', models.DO_NOTHING, blank=True, null=True)
    parent = models.ForeignKey('self', models.DO_NOTHING, blank=True, null=True, related_name="childs")
    auth_user_id = models.OneToOneField(AuthUser, models.DO_NOTHING, db_column="auth_user_id", related_name='cpeUser')
    user_create_date = models.DateTimeField(blank=True, null=True)
    user_expiry_date = models.DateTimeField(blank=True, null=True)
    created_by = models.CharField(max_length=64, blank=True, null=True)
    create_date = models.DateTimeField(blank=True, null=True)
    updated_by = models.CharField(max_length=64, blank=True, null=True)
    update_date = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'cpe_user'

Upvotes: 0

Views: 358

Answers (1)

Haren Lewis
Haren Lewis

Reputation: 161

Try setting class attribute as

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()

And then overriding get_queryset method as below:

def get_queryset(self):
    return self.queryset.filter(is_active=1)

Hope this helps!

Upvotes: 1

Related Questions