You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django admin后台UserProfile数据已入库但列表页不显示如何解决

问题根因

你在UserProfile模型中自定义了过滤性质的模型管理器,但没有保留Django默认的全局查询管理器:

  1. 你自定义的UserProfileManager的get_queryset方法默认过滤仅返回city='London'的数据
  2. UserProfile模型仅配置了london = UserProfileManager()这一个管理器,覆盖了Django默认的objects管理器
  3. Django Admin默认调用模型定义的第一个管理器做数据查询,只要你入库的3条数据city字段值不是London,Admin页面就会查询不到任何结果

解决方法

方案1:保留自定义管理器,同时恢复默认全局查询能力

在UserProfile模型中补充默认管理器定义,且放在自定义管理器前面,这样Admin会优先用默认管理器查询全量数据,同时你还可以继续通过UserProfile.london.all()查询伦敦地区的用户:

class UserProfile(models.Model):
  user = models.OneToOneField(User, on_delete=models.CASCADE, default='', primary_key=True,)
  description = models.CharField(max_length=100, default='')
  city = models.CharField(max_length=100, default='')
  website = models.URLField(default='')
  phone = models.IntegerField(default=0)
  image = models.ImageField(upload_to='profile_image', blank=True)

  # 新增默认全局管理器
  objects = models.Manager()
  london = UserProfileManager()

  def __str__(self):
    return self.user.username

方案2:不需要自定义过滤管理器则直接删除相关代码

如果没有按城市过滤查询的需求,直接删掉UserProfileManager类定义和london = UserProfileManager()这行代码即可恢复默认查询逻辑。

额外排查注意项

如果修改完成后还是看不到数据,可以做以下检查:

  • 确认你登录Admin后台的账号有polls.view_userprofile权限,超级管理员默认拥有全部权限,普通账号可在权限配置页面勾选对应查看权限
  • 你注释的UserProfileAdmin类中存在拼写错误:modle = UserProfile应为model = UserProfile,后续如果要启用自定义Admin配置需要修正该错误

内容的提问来源于stack exchange,提问作者yangmoonmoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:09:00