我想在我的应用程序中实现一个功能,但我不知道如何去做。我想要的是:我有一个模型类,它使用 imagekit 来保存它的图像,我希望用户能够轻松地为车辆更新图像,而无需编辑每个相应的车辆记录。
他们将如何做到这一点,将有一个名为的文件夹originals
,它将包含格式为每个车辆的文件夹<stock_number>/PUBLIC
如果用户将图像移动到PUBLIC
车辆的文件夹中,当脚本执行时,它将比较这些图像如果PUBLIC
文件夹中的内容较新,则使用当前的并更新它们。如果记录没有图像,则将添加它们。此外,如果图像已从 site_media 目录中删除,则应从数据库中删除它们的链接。
我怎样才能以有效的方式解决这个问题?我的模型如下:
class Photo(ImageModel):
name = models.CharField(max_length = 100)
original_image = models.ImageField(upload_to = 'photos')
num_views = models.PositiveIntegerField(editable = False, default=0)
position = models.ForeignKey(PhotoPosition)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
class IKOptions:
spec_module = 'vehicles.specs'
cache_dir = 'photos'
image_field = 'original_image'
save_count_as = 'num_views'
class Vehicle(models.Model):
objects = VehicleManager()
stock_number = models.CharField(max_length=6, blank=False, unique=True)
vin = models.CharField(max_length=17, blank=False)
....
images = generic.GenericRelation('Photo', blank=True, null=True)
进度更新
我已经尝试了代码,虽然它可以工作,但我错过了一些东西,因为我可以获得图像,但在那之后,它们没有被转移到site_media/photos
目录中......我应该这样做还是imagekit
会这样做自动执行此操作?我有点困惑。
我像这样保存照片:
Photo.objects.create(content_object = vehicle, object_id = vehicle.id,
original_image = file)