Значения полей модели 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
'...'