Фильтровать изображения по внешнему ключу - PullRequest
1 голос
/ 20 октября 2019

У меня есть модель 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 Ответ

1 голос
/ 20 октября 2019

Вы можете отфильтровать их с помощью:

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

или без выборки категории в отдельном запросе:

Вы можете отфильтровать их с помощью:

def category_detail_view(request, slug):
    context = {
        'gallery': Image.objects.filter(<b>category__slug=slug</b>),
    }
    return render(request, 'main/category_detail.html', context)
...