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

Django博客项目执行makemigrations报错:Post无publish字段

问题排查与解决

核心问题分析

  • 字段名拼写错误:你的Post模型Meta类中,ordering和indexes配置里用了'-publish',但模型实际定义的字段是published(多了一个字母d),Django找不到名为publish的字段,因此抛出该错误。
  • 属性名大小写错误:__str__方法里返回self.Title,但模型里的字段是小写的title,这会导致后续调用时触发AttributeError,建议一并修正。

修正后的模型代码

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

# Create your models here.
class Post(models.Model):
    
    class Status(models.TextChoices):
        DRAFT = 'DF', 'Draft'
        PUBLISHED = 'PB', 'Published'
    
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250)
    author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='blog_posts')
    body = models.TextField()
    published = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=2,choices=Status.choices,default=Status.DRAFT)

    class Meta:
        ordering = ['-published']  # 修正字段名拼写
        indexes = [ models.Index(fields=['-published']),]  # 修正字段名拼写

    def __str__(self):
        return self.title  # 修正属性名大小写

后续操作步骤

  1. 保存修改后的blog/models.py文件
  2. 重新执行迁移命令:
    python manage.py makemigrations blog
    python manage.py migrate
    

内容的提问来源于stack exchange,提问作者Theow Meng Ang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:21:02