我有一个“类别”、“子类别”和“产品”模型。我不想查看每个类别、子类别和产品,而是想跳转到将填充正确模型的模板。
模型.py
class Category(models.Model):
category_title = models.CharField(max_length=200)
category_image = models.ImageField(upload_to="category")
category_description = models.TextField()
category_slug = models.SlugField(max_length=200, default=1)
class Meta:
verbose_name_plural = "Categories"
def __str__(self):
return self.category_title
class Subcategory(models.Model):
subcategory_title = models.CharField(max_length=200)
subcategory_image = models.ImageField()
subcategory_category = models.ForeignKey(
Category, default=1, verbose_name="Category", on_delete=models.SET_DEFAULT)
class Meta:
verbose_name_plural = "Subcategories"
def __str__(self):
return self.subcategory_title
class Product(models.Model):
product_title = models.CharField(max_length=200)
product_image = models.ImageField()
product_base_price = models.DecimalField(max_digits=12, decimal_places=2)
product_addons = models.CharField(max_length=200, blank=True)
product_description = models.TextField()
product_date_added = models.DateTimeField(default=datetime.now, blank=True)
product_slug = models.SlugField(max_length=200, default=1)
product_subcategory = models.ForeignKey(
Subcategory, default=1, verbose_name="Subcategories", on_delete=models.SET_DEFAULT)
product_available = models.BooleanField(default=True)
最佳答案
列出带有特定产品链接的所有产品
这里是产品模型的示例 View
、url
和模板
。请将 myapp
替换为您的应用名称。
定义 View :
# views.py
from django.views.generic import ListView
from django.shortcuts import render
from .models import Product
class ProductList(ListView):
model = Product
def productdetail(request,id):
product = Product.objects.get(id = id)
return render(request, 'myapp/product.html', {'product': product})
最后将该 View 挂接到您的网址中:
# urls.py
from django.urls import path
from myapp.views import ProductList, productdetail
urlpatterns = [
path('products/', ProductList.as_view()),
path('products/<int:pk>/', productdetail, name='productdetail'),
]
创建一个模板来列出产品:/path/to/project/myapp/templates/myapp/products_list.html
{% extends "base.html" %}
{% block content %}
<h2>Products</h2>
<ul>
{% for product in object_list %}
<li><a href="{% url 'productdetail' product.id %}">{{ product.product_title }} </a></li>
{% endfor %}
</ul>
{% endblock %}
创建一个模板来显示特定产品:/path/to/project/myapp/templates/myapp/product.html
::
{% extends "base.html" %}
{% block content %}
<h2>Product</h2>
{{product.product_title}}
{% endblock %}
关于python - 在 Django 中为单个产品创建页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57618735/