【问题标题】:My Query set is returning empty List even there are users in the db即使数据库中有用户,我的查询集也返回空列表
【发布时间】:2022-12-03 22:50:42
【问题描述】:

下面列出了我的模型、视图和序列化程序类。我正在制作一个管理仪表板,管理员可以在其中创建用户、列出用户并按 ID 搜索用户。

用户已成功创建,但用于列出和搜索的 GET 请求返回一个空列表,即使数据库中存在用户也是如此。

我的模型类:

class MyAccountManager(BaseUserManager):

    def create_user(self,email,username,first_name,last_name, age, password=None):
        if not email:
            raise ValueError("Users must have email address")
        if not username:
            raise ValueError("Users must have username")
        
        user = self.model(
            email=self.normalize_email(email),
            username=username,
            first_name=first_name,
            last_name=last_name,
            age=age,
        )

        user.set_password(password)
        user.save(using=self._db)
        return user
    
    def create_superuser(self,username,email,first_name,last_name,age,password):
        user = self.create_user(
            email=self.normalize_email(email),
            username=username,
            first_name=first_name,
            last_name=last_name,
            age=age,)
        user.is_admin = True
        user.is_staff = True
        user.is_superuser = True
        user.save(using=self._db)
        return user

class User(AbstractBaseUser):
    email = models.EmailField(verbose_name="email",max_length=60,unique=True)
    username = models.CharField(max_length=30,unique=True)
    date_joined = models.DateTimeField(verbose_name='date joined',auto_now_add=True)
    last_login = models.DateTimeField(verbose_name='last login',auto_now=True)
    is_admin = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    first_name = models.CharField (max_length=60)
    last_name = models.CharField(max_length=60)
    age = models.DateField(default=datetime.date.today)
    profile_pic = models.ImageField(upload_to='image',blank=True,null=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username','first_name','last_name','age']

    objects = MyAccountManager()

    def __str__(self):
        return self.username + "," +self.email
    
    def has_perm(self, perm, obj=None):
        return self.is_admin
    
    def has_module_perms(self, app_label):
        return True

我的序列化器类:

class UserSerializer (serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username','first_name','last_name','email','age','is_active']
        read_only_fields = ('email',)
        #fields = '__all__'

我的视图类:

class UserList(generics.ListCreateAPIView):
    
    serializer_class = UserSerializer
    queryset = User.objects.all()
    permission_classes = [permissions.IsAdminUser]
    #authentication_classes = [authentication.TokenAuthentication]


    def list(self,request):
        
        queryset = self.get_queryset()  
        serializer = UserSerializer(queryset, many=True)
        return Response(serializer.data)

我正在发送一个 GET 请求以列出所有在场的用户,但它返回一个空列表 ([])。

没有错误,但返回的是一个空列表。

但是,我正在创建用户并将它们存储在数据库中。

【问题讨论】:

    标签: python django django-models django-rest-framework django-views


    【解决方案1】:

    Model 类似乎存在问题。 请仔细检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多