您的位置:

处理django出现报错FieldDoesNotExist("%s has no field named '%s'" % (self.object_name, field_name))

  发布时间:2023-03-08 22:31:01
报错的原因这个错误通常是由于模型中没有指定的字段造成的。举个例子,假设你有一个模型如果你在你的代码中尝试访问不存在的字段,比如 `field_2`,那么就会出现上述错误。如果没有,你可能需要修改你的模型或者检查你的代码中是否有拼写错误。例如,如果你的代码中有一行但是你的模型中并没有 `field_2` 字段,那么你就需要修改你的代码来访问模型中实际存在的字段。你也可以尝试重新启动你的服务器来解决这个问题。

报错的原因

这个错误通常是由于模型中没有指定的字段造成的。

举个例子,假设你有一个模型:


class MyModel(models.Model):
    field_1 = models.CharField(max_length=100)

如果你在你的代码中尝试访问不存在的字段,比如 `field_2`,那么就会出现上述错误。

为了解决这个问题,你需要检查你的代码中访问的字段是否存在于模型中。如果没有,你可能需要修改你的模型或者检查你的代码中是否有拼写错误。

如何解决

要解决这个问题,你需要检查你的代码中访问的字段是否存在于模型中。如果没有,你可能需要修改你的模型或者检查你的代码中是否有拼写错误。

例如,如果你的代码中有一行:


obj.field_2

但是你的模型中并没有 `field_2` 字段,那么你就需要修改你的代码来访问模型中实际存在的字段。

如果你确实在模型中添加了这个字段,但是仍然遇到了这个错误,那么你可能需要重新运行迁移来更新数据库表结构。

你也可以尝试重新启动你的服务器来解决这个问题。

使用例子

没有问题,这是一个修改模型来解决字段不存在的例子:

假设你有一个模型:


class MyModel(models.Model):
    field_1 = models.CharField(max_length=100)

如果你的代码中有一行:


obj.field_2

但是你的模型中并没有 `field_2` 字段,那么你就需要修改你的模型来添加这个字段:


class MyModel(models.Model):
    field_1 = models.CharField(max_length=100)
    field_2 = models.CharField(max_length=100)

然后你需要运行迁移来更新数据库表结构:


$ python manage.py makemigrations
$ python manage.py migrate

这样你就可以在你的代码中访问 `field_2` 字段了。