【发布时间】:2018-12-20 17:53:30
【问题描述】:
当我执行以下操作时,出现上述错误。
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。
P.S - 以上三个都尝试了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'
【问题讨论】:
-
如果 is_active 是一个布尔字段,使用 'True' 值而不是 '1'
-
这也不行。
-
怪胎,我在这里得到了答案stackoverflow.com/a/35544035/1936024。我的视图集名称和模型名称相同。天真的同事。
-
仍然收到
is_active错误。即使在get_queryset -
您的意思是
all()中的class attribute和filter()中的get_queryset,对吗?只有这样。谢谢。
标签: django-rest-framework django-queryset