Поиск на Джанго

Пишу интернет магазин. Хочу сделать поиск на джанго. Выходит ошибка: Related Field got invalid lookup: icontains Если же меняю ProductImage на Product Он работает, но результат выходит только в виде текста. (Мне нужно, чтобы было с картинкой). Подскажите пожалуйста, что делать. Совсем недавно начал изучать Python и вот застрял.

#views.py

from django.shortcuts import render
from products.models import *
from pet_shop import views
from django.views.generic import TemplateView, ListView
from django.db.models import Q 
 

class SearchResultsView(ListView):
    model = ProductImage
    template_name = 'search_results.html'
 
    def get_queryset(self): 
        query = self.request.GET.get('q')
        object_list = ProductImage.objects.filter(
            Q(product__icontains=query) 
        )
        return object_list

#models.py

class ProductCategory(models.Model):
    name = models.CharField(max_length=64, blank=True, null=True, default=None)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Product category'
        verbose_name_plural = 'Products categories'

class Product(models.Model):
    
    name = models.CharField(max_length=64, blank=True, null=True, default=None)
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    category = models.ForeignKey(ProductCategory, blank=True, null=True, default=None, on_delete=models.CASCADE)
    short_description = models.TextField(blank=True, null=True, default=None)
    description = models.TextField(blank=True, null=True, default=None)
    is_active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
    

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Product'
        verbose_name_plural = 'Products'


class ProductImage(models.Model):
    
    product = models.ForeignKey(Product, blank=True, null=True, default=None, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='products_images/')
    is_main = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)

    def __str__(self):
        return self.id

    class Meta:
        verbose_name = 'Photo'
        verbose_name_plural = 'Photos'

#urls.py


 re_path('search/', SearchResultsView.as_view(), name='search_results'), 

#search_results.html

<!-- templates/search_results.html -->

<html>
    {% extends 'basic.html' %}
    {% load static %}
     
   
   
    {% block content %}
    
    <div class="section2">
      <div class="container">
          <div class="row">  
              <h1 class="text-center">
                  Search results
              </h1>              
              <ul>
                {% for res in object_list %}
                  <li>
                    {{ res.product}}
                  </li>
                  
                {% endfor %}
              </ul>
          </div>
      </div>
  </div>
    
    {% endblock %}
</html>

Вернуться на верх