我写了一个简单的Okay....previously -CSS-Javascript站点。然后,我创建了一个空的Django项目,并尝试将所有内容都放入该项目中。我把事情搞得一团糟!因此,我现在正在从头开始编写所有内容,首先致力于Django项目。我设置的数据库仍然有问题。这是我的models.py:
from django.db import models
# Create your models here.
class Book(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
source = models.CharField(max_length=200)
source_site = models.CharField(max_length=200)
def __str__(self):
return self.title
class Chapter(models.Model):
book = models.ForeignKey(
Book, on_delete=models.CASCADE,
related_name='chapters')
chtitle = models.CharField(max_length=100)
chtitletext = models.CharField(max_length=200)
chtext = models.TextField()
def __str__(self):
return self.chtitle下面是我的views.py:
from django.shortcuts import render, get_object_or_404
# Create your views here.
from django.http import HttpResponse
from .models import Book, Chapter
def index(request):
book_list = Book.objects.order_by('-id')
output = ', '.join([b.title for b in book_list])
context = {
'book_list': book_list,
}
return render(request, 'sophia/index.html', context)
def readBook(request, book_id):
book = get_object_or_404(Book, pk=book_id)
chapter_list = Chapter.objects.order_by('-id')
context = {'book':book, 'chapter_list':chapter_list}
return render(request, 'sophia/readbook.html', context)下面是我的urls.py:
from django.urls import path
from . import views
app_name = 'sophia'
urlpatterns = [
path('', views.index, name='index'),
path('<int:book_id>/', views.readBook,
name='readbook'),
]最后,我的readbook.html:
<h1>{{ book }}</h1>
<h3>{{ book.description }}</h3>
<h3>{{ book.source }}</h3>
<h3>{{ book.source_site }}</h3>
<ul>
{% for chapter in chapter_list %}
<li>{{ chapter.chtitle }} -- {{ chapter.chtitletext }}
</li>
{% endfor %}
</ul>图书模型中的字段显示得很好。但是chapter_list包含了章节模型中的所有章节。我只想要书里的章节。(有人知道为什么我的book_list和chapter_list顺序颠倒吗?)
哦,这是一个截图:
发布于 2021-02-11 07:25:51
你只需要过滤你的章节查询集:
chapter_list = Chapter.objects.filter(book=book).order_by('-id')你可能想要在你的章节模型上添加一个order_id或chapter_number字段,这样你就可以更好地控制它们的显示顺序。
发布于 2021-02-11 07:32:17
我想你可以这么说
def readBook(request, book_id):
book = get_object_or_404(Book, pk=book_id)
chapter_list = Chapter.objects.filter(book=book).order_by('-id') # you scpecify wich book the chapters are from
context = {'book':book, 'chapter_list':chapter_list}
return render(request, 'sophia/readbook.html', context)https://stackoverflow.com/questions/66146270
复制相似问题