Django 模型字段值返回空白?

Django model field values returning blank?

我有一个名为“Person”的模型,其中包含两个字符字段 - first_name 和 last_name。我在 shell 中使用 makemigrations 迁移了它们,并将 first_name 的值设置为我的名字。但是,每当我尝试为 last_name 设置一个值时,它 returns 为空。例如:

 a = Person(last_name="...")
 a.save()
 a.id
 id=...
 Person.objects.get(id=...)
 <Person: >

该值将在括号中留空。这是我的 models.py 如果相关的话:

 from django.db import models

 class Person(models.Model):
      first_name = models.CharField(max_length=15)
      last_name = models.CharField(max_length=6)

      def __str__(self):
         return self.first_name

我没有输入超出 max_length 的值。

__str__ 仅 returns self.first_name 因此这意味着它将 打印 Person<人:<i>last_name</i>>last_namelast_name Person.

如果您将其重写为:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=15)
    last_name = models.CharField(max_length=6)

    def __str__(self):
        return <strong>f'{self.first_name} {self.last_name}'</strong>

它将打印 person 对象及其名字和姓氏。

但是无论 __str__.

的实现如何,将其保存在数据库中并检索它都有效

例如,如果您获得 .last_name 属性,它将打印:

>>> Person.objects.get(id=some_id).last_name
'...'