gpt4 book ai didi

django - 在 Django 1.3 中使用 ImageFields 测试模型时防止剩余的图像文件

转载 作者:行者123 更新时间:2023-12-04 06:05:19 25 4
gpt4 key购买 nike

Django 1.3 使用 FileField 更改了模型的行为s 以便在删除实例时保留实际文件。对于大多数目的,这很好。但是,我正在测试一个大量使用 ImageField 的应用程序。 s,我最终在我的开发上传目录中有数百个无用的剩余图像。由于它是开发,这不是什么大问题,但我更喜欢在测试中自己清理。

使这些图像在测试时不会出现的最佳方法是什么。我强调那部分是因为我不想使用 delete 全面修改此行为。覆盖等

最佳答案

我崩溃了,妥协了一点。我决定继续使用一个覆盖的 delete ,但我删除了依赖于传递 include_images=True 的实际图像文件夸格。

class Photo(models.Model):
...
def delete(self, *args, **kwargs):
if kwargs.pop('include_images', False):
for field in self._meta.fields:
if type(field) == models.ImageField:
image = self.__getattribute__(field.name)
if image.name != '':
image.storage.delete(image.name)
super(Photo, self).delete(*args, **kwargs)

然后,我修改了 tearDown我的测试用例中的方法如下:
def tearDown(self):
for p in Photo.objects.all():
p.delete(include_images=True)

我对这个解决方案并不完全满意,但它是我能得到的最接近我认为理想的解决方案。这真的应该由测试本身来处理。

关于django - 在 Django 1.3 中使用 ImageFields 测试模型时防止剩余的图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com