特定の列に基づく一意の値のみを表示するテーブルを作成しようとしています。次のコードはエラーを表示しませんが、意図したとおりに一意の値を表示しません - 間違いがどこにあるかアイデアはありますか?
なぜこれでうまくいかないのでしょうか?return self.name.distinct('name')
たとえば、Rob には 3 つの住所があるため、テーブルには 3 つの行がありますが、Rob、John、および Clayton を表示するリストをアプリで作成しており、Rob を 1 回だけ表示させたいと考えています。
ビュー.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):
model = Book
class BookCreate(CreateView):
model = Book
fields = ['name', 'address', 'birthdate', 'deathdate', 'description']
success_url = reverse_lazy('books_cbv:book_list')
class BookUpdate(UpdateView):
model = Book
fields = ['name', 'address', 'birthdate', 'deathdate', 'description']
success_url = reverse_lazy('books_cbv:book_list')
class BookDelete(DeleteView):
model = Book
success_url = reverse_lazy('books_cbv:book_list')
models.py
from django.db import models
from django.urls import reverse
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.distinct('name')
def get_absolute_url(self):
return reverse('books_cbv:book_edit', kwargs={'pk': self.pk})
book_list.html
{% extends "base.html" %}
{% block content %}
<h2><a href="{% url 'books_cbv:book_list' %}">Home</a>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</h2>
<ul style="position: absolute; top:50%; left:50%; list-style-type: none">
{% 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>
<!-- add a new {{ photos.image }} for statement here to add horizontal gallery -->
<p class="card-text">{{ book.description }}</p>
<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>
<a href="{% url 'books_cbv:book_new' %}">New</a>
{% endblock %}