【发布时间】:2021-10-16 05:20:39
【问题描述】:
我有一张包含以下信息的表格:
Name | Address
John | 6432 Newcastle Way
Rob | 893 Lake Point St
Rob | 1900 Harbor Lane
Rob | 124 Marginal St
我正在尝试创建一个嵌套列表...也就是说,要显示两个总行(一个用于 John,一个用于 Rob)并在该行内,有另一个列表显示每个不同的地址(因此 Rob 在其中有 3 行他的行)。
这个输出没有给我独特的价值,也没有对它们进行分组......有什么想法可以调整这个或我能找到的任何演练吗?
Views.py
from django.http import HttpResponse
from django.views.generic import TemplateView,ListView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import Book
class BookList(ListView):
queryset = Book.objects.all().distinct('name')
HTML 尝试 1
<ul class="list-group">
{% for book in object_list %}
<li style="margin-bottom: 25px;">
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">{{ book.name }}</h5>
<h6 class="card-subtitle mb-2 text-muted">{{ book.address }}</h6>
<a href="{% url 'books_cbv:book_edit' book.id %}">Edit</a>
<a href="{% url 'books_cbv:book_delete' book.id %}">Delete</a>
</div>
</div>
</li>
{% endfor %}
</ul>
HTML 尝试 2
<table>
{% for book in object_list %}
<li>{{ book.name }}
<li>
{{ book.address }}
</li>
</li>
{% endfor %}
</table>
models.py
class Book(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=200, default='none')
birthdate = models.CharField(max_length=200, default='none')
deathdate = models.CharField(max_length=200, default='none')
description = models.CharField(max_length=1000, default='none')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('books_cbv:book_edit', kwargs={'pk': self.pk})
def make_list(self):
def append_children(parent, self):
children = [[x['address']] for x in d if x['name'] == parent[0]]
if children:
parent.append(children)
for child in children:
append_children(child, self)
results = [[x['address']] for x in d if x['name'] == 'top']
for parent in results:
append_children(parent, self)
return results
【问题讨论】:
标签: python django bootstrap-4