Django模型类无法识别属性及数据库字段缺失问题求助
问题解决步骤
1. 修正模型字段定义方式
Django模型字段必须通过赋值语句定义,不能用类型注解(:)。你最初的错误就是因为用了类型注解,Django没有将content、deadline等识别为模型字段,导致实例没有这些属性。
正确的模型写法如下:
import uuid from django.db import models from django.contrib.auth.models import User class Task(models.Model): id = models.UUIDField( unique=True, auto_created=True, primary_key=True, default=uuid.uuid4, editable=False, ) content = models.CharField( default="", max_length=255, ) deadline = models.IntegerField( default=None, null=True, blank=True, ) creationDate = models.DateField(auto_now_add=True) author = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self) -> str: return f"{self.id} {self.content}"
说明:去掉了字段名后的类型注解(: str、: int),改用=直接赋值模型字段;__str__方法用f-string优化了拼接逻辑。
2. 同步数据库迁移
修改模型后,数据库表结构不会自动更新,这是你第二次出现错误的核心原因。执行以下命令同步结构:
- 生成迁移文件(指定app名称为
api):
python manage.py makemigrations api
- 执行迁移操作,更新数据库表:
python manage.py migrate api
3. 验证结果
重新运行代码,执行print(Task.objects.all())即可正常显示包含id和content的任务实例。
内容的提问来源于stack exchange,提问作者Alex Ironside
相关产品推荐
相关产品推荐

