首页 > 解决方案 > 如何使用 django 构建一个 pinterest 之类的照片选择器?

问题描述

我正在构建一个 django 应用程序,用户可以在其中上传多个图像并将其存储为相册。

在我当前的实现中,我有两个模型PhotoAlbum. 在Album模型中,我有一个模型的多对多字段Photo。因此,用户可以在Album模型中选择多张照片。

有没有一种方法可以在Album模型中实现照片选择器而不是简单的多对多字段?

这是我的代码:

class Photo(models.Model) :
    def get_gallery_path(self, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return 'static/uploads/images/gallery/' + filename

    uploader = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateField(default=date.today)
    image = ProcessedImageField(default='', verbose_name='Image', upload_to=get_gallery_path,validators=[validate_file_size], **processed_image_field_specs)
    caption = models.CharField(max_length=200, null=True, blank=True)

    def __str__(self):
        return str(self.id) + str(self.uploader.username) + str(self.date)

    class Meta:
        verbose_name_plural = "Photos"
        verbose_name = "Photo"


class Album(models.Model) :
    title = models.CharField(max_length=200)
    uploader = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateField(default=date.today)
    description = models.TextField(null=True, blank=True)
    tags = models.ManyToManyField(Tag, blank=True)
    category = models.ManyToManyField(Category, blank=True)
    photos = models.ManyToManyField(Photo, blank=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = "Albums"
        verbose_name = "Album"

PS:我只使用内置的管理界面来存储数据。

标签: djangodjango-models

解决方案


推荐阅读