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

PythonAnywhere环境下Django新增模型字段迁移后Admin页面不显示

问题背景

在PythonAnywhere环境下为Django项目的models.py新增模型字段时遇到异常,具体情况:

  • 为Post模型新增了description字段
  • 已依次执行python manage.py makemigrations和python manage.py migrate完成数据库结构变更
  • 但Admin页面的Post列表、编辑页均未显示新增的description字段
  • 当前运行环境为PythonAnywhere,Python版本为3.8
  • 相关配置代码如下:
# models.py 中 Post 模型代码
class Post(models.Model):
    title = models.CharField(max_length=40, unique=True)
    cover = models.ImageField(upload_to='images/')
    description = models.CharField(max_length=100)
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    slug = models.SlugField(null=False, unique=True)
    def get_absolute_url(self):
        return reverse('post_detail', kwargs={'slug': self.slug})
    updated_on = models.DateTimeField(auto_now= True)
    shortcontent = models.CharField(max_length=150)
    content = RichTextUploadingField(blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    language = models.IntegerField(choices=LANGUAGE, default=0)
    status = models.IntegerField(choices=STATUS, default=0)

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title
# admin.py 中现有配置代码
class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'status','created_on')
    list_filter = ("status",)
    search_fields = ['title', 'content', 'description']
    prepopulated_fields = {'slug': ('title',)}
    class Media:
        js = ('ckeditor.js',)
        # Django会自动从静态文件目录查找js资源,无需手动加/static前缀

admin.site.register(Post, PostAdmin)
解决方法

核心原因说明:目前的admin配置里,仅将description加入了search_fields(该配置仅控制后台搜索功能的匹配范围,不会让字段本身显示在页面上),未在实际控制页面展示的配置中加入该字段,因此无法正常显示。按以下步骤调整即可:

  • 若需要在Post的后台列表页展示description列:修改PostAdmin中的list_display配置,把description加入元组,示例:
    list_display = ('title', 'status', 'created_on', 'description')
    
  • 若需要在Post的编辑表单页展示description字段:
    1. 如果你没有为PostAdmin自定义fields、fieldsets、exclude这类限定表单展示范围的配置,Django默认会自动把所有非系统自动生成的模型字段渲染到编辑表单中,无需额外配置;
    2. 如果你之前自定义了表单的展示字段范围,只要在对应的配置列表中把description加入即可,常见配置示例:
      # 直接指定编辑页展示的字段列表
      fields = ['title', 'cover', 'description', 'shortcontent', 'content', 'status']
      # 或在分组字段配置fieldsets的对应分组中加入'description'
      
  • 配置调整完成后,需要回到PythonAnywhere的Web管理页,点击对应应用的Reload按钮重启服务,让修改后的admin配置生效。
  • 可选校验:执行python manage.py showmigrations命令,确认对应app的迁移记录已标记为[X]已应用状态,排除迁移实际未同步到数据库的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 07:24:10