Django模型text属性不返回文本,admin面板显示对象而非输入内容求助
问题根因
你的代码存在两个缩进和方法缺失的错误:
Topic模型没有定义__str__方法,Django对没有自定义字符串表示的模型,默认返回模型类名 object (主键ID)的格式,这就是你看到Topic object (1)这类输出的直接原因Entry模型的Meta类、__str__方法缩进错误,完全写在了Entry类的外部,不会被Entry模型识别调用,因此Entry也使用了默认的字符串返回格式
修复后的完整模型代码
from django.db import models class Topic(models.Model): """A topic the user is learning about""" text = models.CharField(max_length=200) date_added = models.DateTimeField(auto_now_add=True) # 给Topic添加__str__方法 def __str__(self): """Return a string representation of the topic""" return self.text class Entry(models.Model): """Something specific learned about a topic""" topic = models.ForeignKey(Topic, on_delete=models.CASCADE) text = models.TextField() date_added = models.DateTimeField(auto_now_add=True) # Meta类缩进改到Entry内部 class Meta: verbose_name_plural = 'entries' # __str__方法缩进改到Entry内部 def __str__(self): """Return a string representation of the model""" return f"{self.text[:50]}"
后续操作
修改代码后不需要执行数据库迁移(没有修改数据库字段结构),直接重启Django开发服务即可,admin面板和前端都会正常显示对应的文本内容。
内容的提问来源于stack exchange,提问作者cetins
相关产品推荐
相关产品推荐

