【问题标题】:Why RelatedObjectDoesNotExist is thrown when trying to add an entery from the django admin?尝试从 django 管理员添加条目时,为什么会抛出 RelatedObjectDoesNotExist?
【发布时间】:2021-07-21 19:01:11
【问题描述】:

在我的模型中,我有 ImageAlbum 模型和 Image 模型。在 Image 模型中,我有一个指向 ImageAlbum 的 ForeignKey 字段。这段代码其实是this文章推荐的。

class ImageAlbum(models.Model):

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


class Image(models.Model):
    name = models.CharField(max_length=255)
    image = models.ImageField(upload_to=get_upload_path)
    default = models.BooleanField(default=False)
    thumbnail = models.ImageField(upload_to=get_thumbnail_path, default='default/default_thumbnail.jpg')
    album = models.ForeignKey(ImageAlbum, on_delete=models.CASCADE)

我在管理员中注册了模型,图像表单如下所示:

点击保存后,出现以下异常:

【问题讨论】:

  • 这是您的ImageAlbum 模型的实际代码吗?你的错误与它真的不匹配。其他的model 与它有关吗?请显示模型的正确代码,尤其是其实际的__str__ 方法。
  • @AbdulAzizBarkat 你说得很好。这有助于我调试问题。我设法找到了问题的真正所在。在Image模型中,在我设置上传路径的函数中,调用了一个不存在的方法,因此RelatedObjectDoesNotExist和ImageAlbum没有model的信息。

标签: django django-models django-admin


【解决方案1】:

我遇到了同样的问题,就我而言,它与迁移有关。清除它们后,我重新运行了迁移,这解决了您强调的问题。当然,这是在具有 SQLite 数据库设置的本地开发环境中,您可能在生产中没有这样的奢侈。

【讨论】:

    【解决方案2】:

    您的ImageAlbum 模型应该如下所示。

    class ImageAlbum(models.Model):
        image = models.ImageField(upload_to='images/', blank=True) # new
    
        def __str__(self):
            return str(self.pk)
    

    先迁移,然后再次检查,这样可以。

    【讨论】:

    • 嗯...我将 ImageAlbum 作为多个图像的集合。这就是为什么我在我的Image 模型上有一个指向 ImageAlbum 的 ForeignKey。即使您的解决方案可以解决错误,它也不符合我想要的功能。
    • 您应该为图像创建另一个应用程序,并将它们与您想要的多对多字段关系绑定。这是为一个条目混合多个图像的另一种方法。
    • 在这里我使用相同的方法..github.com/faisalnazik/…。将视频应用程序视为图像应用程序,这将为您完成这项工作。
    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2021-10-31
    • 2012-09-28
    • 1970-01-01
    • 2021-08-10
    • 2014-07-07
    • 2017-04-15
    相关资源
    最近更新 更多