我正在开展一个实践项目,创建 3 个独立的页面,即品牌页面、车型页面和车型变体详细信息页面。
我正在开发一个包含三个车型汽车品牌、车型、车型变体的项目 当用户打开汽车型号页面时,他们应该看到该汽车型号的变体列表
class BrandName(models.Model):
FullName = models.CharField(max_length= 100)
Slogan = models.CharField(max_length = 255)
slug = models.SlugField(unique=True)
def __str__(self):
return f"{self.FullName}"
class CarModel(models.Model):
Brand = models.ForeignKey(BrandName, on_delete = models.CASCADE,null=True, related_name = "brands")
ModelName = models.CharField(max_length = 200)
slug = models.SlugField(unique=True)
def __str__(self):
return f"{self.ModelName}"
class CarModelVariant(models.Model):
ModelVariantName = models.CharField(max_length = 100)
Brandname = models.ForeignKey(BrandName, on_delete = models.CASCADE, null = True, related_name="brands1")
Model1 = models.ForeignKey(CarModel, on_delete = models.CASCADE, null = True, related_name = "model1")
Doors = models.IntegerField
SeatingCapacity = models.IntegerField
def __str__(self):
return f"{self.ModelVariantName}"
from django.shortcuts import render
from django.http import HttpResponse
from . models import CarModelVariant, CarModel, BrandName
from django.views.generic import ListView, DetailView
class CarModelVariantView(ListView):
template_name = "carlist.html"
model = CarModelVariant
def get_queryset(self):
list_model = super().get_queryset()
data = list_model.filter(Model1= CarModel_instance)
return data
`来自 django.urls 导入路径 从 。导入视图
urlpatterns = [ 路径(“slug:slug”,views.CarModelVariantView.as_view()) ]`
我在加载 carlist.html 模板时面临空白页面
`{% extends "base.html" %}
{% block title%}
Car Brand Variants List
{% endblock%}
{% block content %}
<ul>
{% for variant in data %}
<li>{{ variant }}</li>
{% endfor %}
</ul>
{% endblock %}`
您看不到元素列表,因为您没有正确使用 CarModelVariant 模型列表的命名。 默认情况下,存储此列表的变量是 object_list。
也就是说,如果你想迭代 CarModelVariant 列表,你应该使用以下构造
{% for variant in object_list %}
<li>{{ variant }}</li>
{% endfor %}
如果您想将变量用于列表,则必须指定 context_object_name 属性
class CarModelVariantView(ListView):
context_object_name = 'data'
UPD
在类中使用大写字母的属性被认为是不好的形式。