Создаю интернет магазин.
Создал абстрактную модель, которую буду наследовать, и создал много продуктов, но позже столкнулся с проблемой, что в html нужно создавать отдельный блок и отдельно вызывать каждый продукт, а далее столкнулся с подобной проблемой, когда дошел до корзины и понял, что так не должно быть.
Как объединить все продукты разных классов в одну переменную или как с ними работать?
Просто пример про что идет речь.
class Product(models.Model):
product_name = models.CharField(max_length=50)
slug = models.SlugField(max_length=50)
class Meta:
abstract = True
class Phone(Product):
parameters = models.CharField(max_length=200)
class Book(Product):
parameters = models.CharField(max_length=200)
class Scooter(Product):
parameters = models.CharField(max_length=200)
class BoardGames(Product):
parameters = models.CharField(max_length=200)
Передаю продукт
def home(request):
phones = Phone.objects.all().filter(is_available=True)
books = Book.objects.all().filter(is_available=True)
scooters = Scooter.objects.all().filter(is_available=True)
board_games = BoardGame.objects.all().filter(is_available=True)
context = {
'phones': phones,
'books': books,
'scooters': scooters,
'board_games': board_games,
}
return render(request, 'home/home.html', context)
Много блоков в html
{% for phone in phones %}
<div class="col-md-3">
<div class="card card-product-grid">
<a href="{% url 'phone_detail' phone.id %}" class="img-wrap"> <img
src="{{phone.image.url}}">
</a>
<figcaption class="info-wrap">
<a href="#" class="title">{{phone.product_name}}</a>
<div class="price mt-1">${{phone.price}}</div> <!-- price-wrap.// -->
</figcaption>
</div>
</div> <!-- col.// -->
{% endfor %}
{% for book in books %}
<div class="col-md-3">
<div class="card card-product-grid">
<a href="{% url 'book_detail' book.id %}" class="img-wrap"> <img src="{{book.image.url}}">
</a>
<figcaption class="info-wrap">
<a href="" class="title">{{book.product_name}}</a>
<div class="price mt-1">${{book.price}}</div> <!-- price-wrap.// -->
</figcaption>
</div>
</div> <!-- col.// -->
{% endfor %}
{% for scooter in scooters %}
<div class="col-md-3">
<div class="card card-product-grid">
<a href="{% url 'scooter_detail' scooter.id %}" class="img-wrap"> <img
src="{{scooter.image.url}}">
</a>
<figcaption class="info-wrap">
<a href="" class="title">{{scooter.product_name}}</a>
<div class="price mt-1">${{scooter.price}}</div> <!-- price-wrap.// -->
</figcaption>
</div>
</div> <!-- col.// -->
{% endfor %}
{% for b_g in board_games %}
<div class="col-md-3">
<div class="card card-product-grid">
<a href="{% url 'board_game_detail' b_g.id %}" class="img-wrap"> <img
src="{{b_g.image.url}}">
</a>
<figcaption class="info-wrap">
<a href="" class="title">{{b_g.product_name}}</a>
<div class="price mt-1">${{b_g.price}}</div> <!-- price-wrap.// -->
</figcaption>
</div>
</div> <!-- col.// -->
{% endfor %}