Значения полей модели Django возвращаются пустыми?

Я начинающий Django. У меня есть модель "Person" с двумя символьными полями - first_name и last_name. Я переместил их с помощью makemigrations в оболочке и установил значение first_name на свое имя. Однако, когда я пытаюсь установить значение для last_name, оно возвращается пустым. Например:

 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__ возвращает только self.first_name, следовательно, это означает, что он будет печатать Person как <Person: last_name> с last_name last_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 f'{self.first_name} {self.last_name}'

он напечатает объект person с его именем и фамилией.

Но сохранение его в базе данных и извлечение работает, независимо от реализации __str__.

Если вы, например, получите атрибут .last_name, то будет выведено:

>>> Person.objects.get(id=some_id).last_name
'...'
Вернуться на верх