Ошибка __str__ вернула нестроку (тип NoneType)
Я знаю, что эта ошибка является классической. Но я столкнулся с более сложной проблемой :
Это моя модель. Я просмотрел все темы об этой распространенной проблеме, пытаюсь решить ее, но не получается. Я не могу добавить stafftimeslot в панели администратора.
Можете ли вы мне помочь?
Вот мой models.py :
from django.db import models
from django.utils import timezone
from staffs.models import Staff
from students.models import Student
TIMESLOT_LIST = (
(0, '09:00 – 09:30'),
(1, '09:30 – 10:00'),
(2, '10:00 – 10:30'),
(3, '10:30 – 11:00'),
...
)
class StaffTimeSlots(models.Model):
staff = models.ForeignKey(Staff, null=True, on_delete=models.CASCADE)
date = models.DateField(default=timezone.now)
time_slot = models.CharField(max_length=2, choices=TIMESLOT_LIST)
def get_absolute_url(self):
return reverse('stafftimeslot_detail', kwargs={"pk": self.pk})
def __str__(self):
return str(self.date)
EDIT : Когда я удаляю ForeignKey, он работает, но когда я повторно использую его, он больше не работает. Поэтому я попытался заменить на OnetoOneField и ManytoManyField и столкнулся с той же проблемой. Похоже, что модель не принимает модельные отношения. Как я могу связать эту модель с моделью Staff с помощью внешнего ключа?
Ваша дата может быть пустой, поэтому верните что-нибудь другое, если это так
def __str__(self):
return str(self.date) if self.date else "no date available"
Я устранил проблему.
Проблема возникает из-за модели Staff. Вот она :
class Staff(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)
def __str__(self):
if self.user is not None:
return self.user.firstname + " " + self.user.lastname
В моей базе данных не было записи Staff, унаследованной от класса User. Поэтому я добавляю else
вот так :
def __str__(self):
if self.user is not None:
return self.user.firstname + " " + self.user.lastname
else:
return "Unknown"