如何在admin(Django)中从服务器中选择(而不是上传)文件



我需要在每个帖子中显示图标(表示帖子中文档的类型(。每年有数百个职位。大约有十几种类型的文档,因此我需要那么多图标。问题是,如果我使用models.ImageField,它会在每次创建帖子时上传一个新的图像,我很快就会得到一堆相同的图标。所以我想知道如何实现以下逻辑:

  1. preview_icon->从服务器中选择

  2. upload_icon->如果服务器上不存在所需的图标,则通过preview_icon字段上传并从服务器中选择。

我最初的想法是制作一个新模型:

class PostIcon(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="icons")
post_icon = models.ImageField(upload_to=f"path")

所以你们可以把图标连接到帖子上。但我想知道是否有一种方法可以实现我提到的第一个逻辑,因为它会整洁得多。非常感谢。

我已经这样做了,它运行得很好。但我希望看到这样的解决方案,在这种情况下,您可以浏览服务器以获取图像,而不是通过icon_name进行选择。如果有人有类似的问题,希望这能有所帮助。

class PostIcon(models.Model):
icon_name = models.CharField(max_length=100, unique=True)
preview_icon = models.ImageField(default="path")
def __str__(self):
return str(self.icon_name)

class Post(models.Model):
preview_icon = models.ForeignKey(PostIcon, on_delete=models.SET_DEFAULT, default=None, related_name="post_icon")
...

最新更新