首页 > 解决方案 > Django:当我尝试从管理仪表板添加模型的新实例时返回 __str__ 错误

问题描述

当我尝试添加任何具有Campus作为外键的模型的新实例时,我得到了这个错误,我傻眼了。

错误信息

这是 Campus 模型的代码

from django.db import models

class Campus(models.Model):
name = models.TextField(max_length = 100, default=None)
description = models.TextField(max_length = 100, default=None)

def __str__(self):
    return self.name

我不确定str函数有什么问题,因为这是我对所有基本模型所做的。

谢谢你提供的所有帮助

标签: pythondjangopython-3.x

解决方案


这不是问题所在__str__Campus它是一些其他模型(或其他东西),它具有返回对象(可能带有/ )的__str__东西,因此不会调用该对象。CampusForeignKeyOneToOneField__str__

因此,如果您的模型如下所示,通常会发生这种情况:

class MyOtherModel(models.Model):
    campus = models.ForeignKey(Campus, on_delete=models.CASCADE)

    # …

    def __str__(self):
        return self.campus

因此,这里的__str__方法返回一个Campus对象,而不是字符串。您可以通过将Campus对象转换为string 来修复它,例如通过调用str(..)它:

class MyOtherModel(models.Model):
    campus = models.ForeignKey(Campus, on_delete=models.CASCADE)

    # …

    def __str__(self):
        return str(self.campus)

推荐阅读