【问题标题】:Error __str__ returned non-string (type NoneType)错误 __str__ 返回非字符串(NoneType 类型)
【发布时间】:2021-11-09 18:50:36
【问题描述】:

我知道这个错误很经典。但我面临一个更难的问题:

这是我的模型。我已经检查了有关此常见问题的所有主题,尝试解决它,但我没有实现。我无法在管理面板中添加人员时间段。

你能帮帮我吗?

这是我的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)

编辑:当我删除 ForeignKey 时,它可以工作,但是当我重用它时,它就不再工作了。所以我尝试用 OnetoOneField 和 ManytoManyField 替换,我也遇到了同样的问题。该模型似乎不接受模型关系。如何将此模型与带有外键的 Staff 模型相关联?

【问题讨论】:

  • 如果设置了日期,您的模型只会返回字符串表示形式。万一没有一个……!?
  • 没有if条件的同样问题..
  • 也许你对那些相关的模型也有同样的事情......?堆栈跟踪是否提供了更多 __str__ 所抱怨的信息……?
  • 您的原始代码在__str__ 方法中有一个条件if self.date is not None:。这可以解释为什么会返回 None
  • 错误来自 外键 模型,如果您查看回溯(您应该提供文本而不是该图像)label_from_instance 是发生错误,它基本上试图获取标签以用于选择字段中的实例。因此,您需要为 Staff 模型修复 __str__...

标签: python django string forms nonetype


【解决方案1】:

我解决了这个问题。

问题来自员工模型。就是这样:

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

我的数据库中没有从 User 类继承的 Staff 条目。所以我像这样添加else

def __str__(self):
    if self.user is not None:
        return self.user.firstname + " " + self.user.lastname
    else:
        return "Unknown"

【讨论】:

    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多