小编tim*_*tim的帖子

如何使用post_delete - Django 1.8从文件系统中删除文件

我有一个模型 - 产品,其中包含缩略图.我有另一个模型,其中包含与产品相关的图像 - ProductImage.我希望在删除产品实例时从服务器中删除缩略图和图像,有一段时间这似乎有效,但现在不行了.

相关代码......

Class Product(models.Model):
    title = Charfield
    thumbnail = ImageField(upload_to='thumbnails/', verbose_name='thumbnail', blank=True, )

Class ProductImage(models.Model):
    product = models.ForeignKey(plant, default=None, related_name='images')
    image = models.ImageField(upload_to='images/', verbose_name='image',)
Run Code Online (Sandbox Code Playgroud)

以下删除方法(在产品类中)正在运行,但我更改了我的代码并且它不再有效 - 从我所读到的最佳做法是使用post_delete,而不是覆盖delete()

def delete(self):
    images = ProductImage.objects.filter(product=self)
    if images:
        for image in images:
            image.delete()
    super(Product, self).delete()
Run Code Online (Sandbox Code Playgroud)

如何重写一个能实现我想要的删除方法?我曾尝试使用post_delete但到目前为止我一直没有成功,因为我不确定如何在删除ProductImage实例时应用它...

django django-signals django-uploads

11
推荐指数
2
解决办法
1万
查看次数

在模板中显示上传的图像 - Django

我正在尝试将上传的图像显示到我想象中的蔬菜目录的模板中.

我有一个页面添加一个新的蔬菜和上传图像.主模板是一个蔬菜列表,稍后会有缩略图.

现在,当查看蔬菜的详细页面时,我想显示其图像,但模板只显示字符串'VegetableImage Object'代替图像,即使使用img标签.

我很困惑,因为模板显然已经找到了图像,但它们只是作为通用字符串显示.

models.py

class Vegetable(models.Model):
        title = models.CharField(max_length=0)
        category = models.CharField(max_length=50,
                                    choices=CATEGORY_CHOICES)
        thumbnail = models.ImageField(upload_to = 'uploaded_images/')


class VegetableImage(models.Model):
    vegetable = models.ForeignKey(Vegetable, default=None, related_name='images')
    image = models.ImageField(upload_to='images/vegetable',
                             verbose_name='image',)
Run Code Online (Sandbox Code Playgroud)

查看主模板(所有蔬菜的列表)和详细视图

class VegetableView(generic.ListView):
    template_name = 'vegetable/vegetable.html'
    context_object_name = 'vegetable_list'

    def get_queryset(self):
        return Vegetable.objects.all()

class DetailView(generic.DetailView):
    model = Vegetable
    template_name = 'vegetable/detail.html'
Run Code Online (Sandbox Code Playgroud)

显示菜细节的细节模板

{% if view %}
    <h1>Title: {{ vegetable.title }}</h1>
    <h2>Category: {{ vegetable.category }}</h2>
    <p>Thumbnail: {{ vegetable.thumbnail }}</p>
    <p>Images:     
{% for vegetable in vegetable.images.all %}
    {{ vegetable …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-related-manager pillow

2
推荐指数
1
解决办法
8912
查看次数