通过外键过滤图像

时间:2019-10-19 21:47:09

标签: django django-models django-templates django-views

我有一个Image模型和一个Category模型。我只想在category_detail视图中显示相应类别的图像。

models.py

class Category(models.Model):
    category_title = models.CharField(max_length=200)
    category_image = models.ImageField(upload_to="category")
    category_description = models.TextField()
    slug = models.SlugField(max_length=200, unique=True, default=1)

    class Meta:
        verbose_name_plural = "Categories"

    def __str__(self):
        return self.category_title


class Image(models.Model):
    category = models.ForeignKey(Category, on_delete="CASCADE")
    image = models.ImageField()
    caption = models.CharField(max_length=250)

    class Meta:
        verbose_name_plural = "Images"

    def __str__(self):
        return str(self.image)

views.py

def category_detail_view(request, slug):
    category = get_object_or_404(Category, slug=slug)
    context = {
        "gallery": Image.objects.filter(Category),
    }
    return render(request, 'main/category_detail.html', context)

category_detail.html

{% for image in gallery %}
  <div class="col-md-4">
      <a href="{{ image.url }}"> <img src="{{ image.url }}" class="img-responsive img-thumbnail" width="304" height="236"/>
      </a>
   </div>
{% endfor %}

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法过滤它们:

space

,或者无需在单独的查询中获取类别:

您可以使用以下方法过滤它们:

def category_detail_view(request, slug):
    category = get_object_or_404(Category, slug=slug)
    context = {
        'gallery': Image.objects.filter(category=category),
    }
    return render(request, 'main/category_detail.html', context)