要创建一个包含外键的列表视图,可以按照以下步骤进行操作:
Category
和Product
,其中Product
模型具有一个外键字段category
指向Category
模型。from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
def __str__(self):
return self.name
ListView
视图类来展示Product
模型的列表,同时显示每个产品的类别。from django.views.generic import ListView
from .models import Product
class ProductListView(ListView):
model = Product
template_name = 'product_list.html'
product_list.html
,用于显示产品列表和类别信息。{% extends 'base.html' %}
{% block content %}
Product List
{% for product in object_list %}
- {{ product.name }} - {{ product.category.name }}
{% endfor %}
{% endblock %}
在这个示例中,我们通过product.category.name
来获取每个产品的类别名称。
from django.urls import path
from .views import ProductListView
urlpatterns = [
path('products/', ProductListView.as_view(), name='product-list'),
]
这样,当访问/products/
时,将会显示包含外键的产品列表视图。
请注意,上述示例只是一个基本示例,并不包含分页、排序等功能。你可以根据具体需求进行进一步的定制和优化。