我正在关注Django中的一个教程,在那里我发现了一个特定的for循环来获取实际过滤数据的模型中的实体。
以下是型号(models.py)
class Brand(models.Model):
name = models.CharField(max_length=30)
origin = models.CharField(max_length=50)
class Model(models.Model):
brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
model_name = models.CharField(max_length=30)
class Review(models.Model):
article = models.CharField(max_length=2000)
label_model = models.ManyToManyField(Model)
以下是views.py
from django.views import generic
from .models import Brand
from .models import Model
from .models import Review
class BrandListView(generic.ListView):
template_name = 'phonereview/brands.html'
context_object_name = 'all_phone_brands'
def get_queryset(self):
return Brand.objects.all()
class ModelDetailView(generic.DetailView):
model = Brand
template_name = 'phonereview/models.html'
class ReviewDetailView(generic.DetailView):
model = Model
template_name = 'phonereview/reviews.html'
以下是模板1)上市品牌(templates / app name / brands.html)
<ul>
{% for brand in all_phone_brands %}
<li>
<a href = "{% url 'phonereview:models' brand.slug %}">
{{ brand.name }}
</a>
</li>
{% endfor %}
</ul>
这里的all_phone_brands
来自views.py。 2)用于列出手机型号的模板
<ul>
{% for model_item in brand.model_set.all %}
<li>
<a href="{% url 'phonereview:reviews' model_item.slug %}">
{{ model_item.model_name }}
</a>
</li>
{% endfor %}
</ul>
即使代码有效,我也不确定brand.model_set.all
是否正确。我想,必须有一个更好的方法呢。
谁能帮助我以正确的方式做到这一点?