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