django 类看不到其属性[重复]

68bkxrlz  于 2023-10-21  发布在  Go
关注(0)|答案(2)|浏览(100)

此问题已在此处有答案

django.db.utils.OperationalError: my_table has no column id error?(2个答案)
昨天关门了。
我的课

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

class Task(models.Model):
    id: models.UUIDField(unique=True, auto_created=True)
    content: models.CharField(default="")
    deadline: models.IntegerField(default=None)
    creationDate: models.DateField(auto_now_add=True)
    author: models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self) -> str:
        return str(self.id) + str(self.content)

我的错误:
File“/Users/ironside/Documents/Python/PythonDjango-Project/API/models.py“,line 13,instr
return str(self.id)+ str(self.content)
属性错误:“任务”对象没有属性“内容”
我测试了,所有其他属性给予相同的错误('内容'更改为属性名称)。
就好像它只把id看作是有效的属性。
我希望能够打印id +内容或任何其他属性
编辑:
更新型号:

class Task(models.Model):
    id: str = models.UUIDField(
        unique=True,
        auto_created=True,
        primary_key=True,
        default=uuid.uuid4,
        editable=False,
    )
    content: str = models.CharField(
        default="",
        max_length=255,
    )
    deadline: int = 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 str(self.id) + str(self.content)

新的误差
django.db.utils.OperationalError:表API_task没有名为content的列
执行print(Task.objects.all())

wd2eg0qa

wd2eg0qa1#

实际上,你的模型定义不是django的方式。

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

class Task(models.Model):
    id = models.UUIDField(primary_key=True, unique=True, auto_created=True, default=uuid.uuid4, editable=False)
    content = models.CharField(max_length=255, default="")
    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 str(self.id) + ' ' + self.content
11dmarpk

11dmarpk2#

你使用注解赋值而不是常规赋值有什么特别的原因吗?
https://docs.python.org/3/reference/simple_stmts.html#index-15
如果你因为某些特定的原因使用带注解的,你还需要传入类型和赋值。
就像这样。

content: type = models.CharField(default="")

相关问题