我正在一个Django项目中,我有3个模型Books,Chapters,Topics。

我想显示用户界面中所有书籍的列表。当用户单击任何一本书时,将显示所有章节,而当用户单击任意一章时,将显示所有主题。

我正在尝试使用基于类的视图。
要获取书籍列表,请查看.py

class read_books(TemplateView):
model = books
template_name='books_list.html'
def get_context_data(self, *args, **kwargs):
    ctx = super(read_books, self).get_context_data(*args, **kwargs)
    ctx["books"]=books.objects.all()
    #here is the problem
    ctx["chapters"]=chapters.objects.filter(book_id=4)
    return ctx


和books_list.html作为
    
    

<script>
    $(document).ready(function(){
        $("#child").hide();
        $("#parent").click(function(){
        $("#child").show();
        });
    });
</script>
</head>

 <div id="parent" class="nav-width center-block">
    {% for wb in books %}
        <button>{{ wb.book_name }}</button>
        </br></br>
    {% endfor %}
</div>


<div id="child">
    {% for s in chapters %}
    <a href="">{{s.sheet_name}}</a>
    </br></br>
    {% endfor %}
</div>
{% endblock %}


现在我很麻烦,将有一个带有ID的书籍清单。我想通过那个身份证
    'ctx [“ chapters”] = chapters.objects.filter(book_id = 4)'
现在我正在手动传递它。谁能提出建议并帮助您从书本模型中获取ID并将其传递给此查询
任何帮助都将得到高度重视。

最佳答案

如果您要坚持使用CBV,则应该具有以下内容

class BookList(ListView):
   model = Book

# the below would show the details of particular chapters for a specific book

class BookDetail(DetailView):
   model = Book

#and so on
class chapterList(ListView):
   model = Chapter

on your html - link the urls to each book/chapter by using their respective pks

<a href = '{% url "book" pk = obj.pk %}'></a>

09-26 14:35