这是我的第一个项目,我试图将多个模型传递到我的ListView,并通过不同的上下文\对象\名称将它们传递到我的模板/索引中,但似乎有一种快捷方式或另一种方法我没有找到
from django.db import models
class Kunafa(models.Model):
name = models.CharField(max_length=100)
img = models.ImageField(upload_to='pics')
desc = models.TextField()
price = models.IntegerField()
offer = models.BooleanField(default=False)
class Baklawa(models.Model):
name = models.CharField(max_length=100)
img = models.ImageField(upload_to='pics')
desc = models.TextField()
price = models.IntegerField()
offer = models.BooleanField(default=False)
class Crunchy_kunafa(models.Model):
name = models.CharField(max_length=100)
img = models.ImageField(upload_to='pics')
desc = models.TextField()
price = models.IntegerField()
offer = models.BooleanField(default=False)
class Topping(models.Model):
name = models.CharField(max_length=100)
price = models.IntegerField()
from .models import Kunafa, Crunchy_kunafa, Baklawa, Topping
from django.views.generic import ListView
class HomeView(ListView):
model = Kunafa
template_name = 'index.html'
context_object_name = 'Kunafa'
class HomeView(ListView):
model = Baklawa
template_name = 'index.html'
context_object_name = 'Baklawa'
class HomeView(ListView):
model = Crunchy_kunafa
template_name = 'index.html'
context_object_name = 'Crunchy_kunafa'
class HomeView(ListView):
model = Topping
template_name = 'index.html'
context_object_name = 'Topping'
{% extends 'base.html' %}
{% block body %}
<div class="album py-5 bg-light">
<div class="container">
<div class="row">
{% for kun in Kunafa %}
<div class="col-md-4">
<div class="card mb-4 box-shadow">
<img class="card-img-top" src="https://via.placeholder.com/250x200" alt="card image cap">
<div class="card-body">
<h4 class=""><a href="{{ core.get_absolute_url }}">{{ kun.name }}</a></h4>
<p class="card-text"></p>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<div class="album py-5 bg-light">
<div class="container">
<div class="row">
{% for bak in Baklava %}
<div class="col-md-4">
<div class="card mb-4 box-shadow">
<img class="card-img-top" src="https://via.placeholder.com/250x200" alt="card image cap">
<div class="card-body">
<h4 class=""><a href="{{ core.get_absolute_url }}">{{ bak.name }}</a></h4>
<p class="card-text"></p>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<div class="album py-5 bg-light">
<div class="container">
<div class="row">
{% for crun in Crunchy_kunafa %}
<div class="col-md-4">
<div class="card mb-4 box-shadow">
<img class="card-img-top" src="https://via.placeholder.com/250x200" alt="card image cap">
<div class="card-body">
<h4 class=""><a href="{{ core.get_absolute_url }}">{{ crun.name }}</a></h4>
<p class="card-text"></p>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<div class="album py-5 bg-light">
<div class="container">
<div class="row">
{% for top in Topping %}
<div class="col-md-4">
<div class="card mb-4 box-shadow">
<img class="card-img-top" src="https://via.placeholder.com/250x200" alt="card image cap">
<div class="card-body">
<h4 class=""><a href="{{ core.get_absolute_url }}">{{ top.name }}</a></h4>
<p class="card-text"></p>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock %}
任何帮助或建议,以解决它,甚至清理我的代码,我将不胜感激
首先,我认为您必须更新您的模型,因为它们是相关的,并且大多数字段都是重复的。否则,如果您不想在模型中进行任何更新,那么对于基于类的视图,您必须通过重写get\u context\u data方法向传递到模板的上下文添加额外数据
请检查更新的index.html和views.py:
视图。py: 来自。型号进口Kunafa、Crunchy_Kunafa、Baklawa、Topping 从django.views.generic导入ListView
如果您想使用基于功能的视图的相同模型,其非常简单,如下所示:
您可以这样做,首先您应该调用基本上下文并将字典作为上下文添加到其中
相关问题 更多 >
编程相关推荐