FieldError: Невозможно разрешить ключевое слово «is_active» в поле - PullRequest
0 голосов
/ 19 декабря 2018

Я получаю вышеуказанную ошибку, когда выполняю следующие действия.

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  

Моя модель содержит поле is_active, а сериализатор имеет fields = '__all__'.

Нужно ли переопределитьget_queryset метод?

РЕДАКТИРОВАТЬ:

Следующие работы. РЕДАКТИРОВАТЬ 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)

Все три говорят Cannot resolve keyword 'is_active' into field.

PS - Выше всех трех судили с queryset = User.objects.all() вкласс

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'

1 Ответ

0 голосов
/ 20 декабря 2018

Попробуйте установить атрибут класса как

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

, а затем переопределить метод get_queryset, как показано ниже:

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

Надеюсь, это поможет!

...