我没有从数据库中获取值

I am not getting the value from the database

我在 Django 中使用 MVT。我正在使用通用 CBV(列表视图、详细视图)。这是我的代码

这里是model.py

from django.db import models


class Singers(models.Model):
    name= models.CharField(max_length=256)
    age= models.IntegerField()
    gender= models.CharField(max_length=10)


class Albums(models.Model):
    name= models.CharField(max_length=256)
    singer=models.ForeignKey(Singers, on_delete=models.CASCADE)

view.py

from django.views import generic
from core.models import Albums, Singers

#in generic view instead of functions, we use classes

class AlbumView(generic.ListView):
    model = Albums
    template_name = 'index.html'
    paginate_by = 10
    def get_queryset(self):
        return Albums.objects.all()

class DetailView(generic.DetailView):
    model = Albums
    template_name = 'detailview.html'

这里是urls.py

from django.urls import path
from core.views import AlbumView, DetailView
urlpatterns = [
    path('album/', AlbumView.as_view()),
    path('album/detail/<pk>/', DetailView.as_view())
]

这里是index.html


{% block content %}
    <h2>Albums</h2>
    <ul>
        {% for albums in object_list %}
            <li>{{ albums.name }}</li>
        {% endfor %}
    </ul>
{% endblock %}


这里是detailview.html

{% block content %}
  <h1>name: {{Albums.name}}</h1>
  <p><strong>Singer: {{Albums.Singer}}</strong></p>
{% endblock %}

详细视图工作不正常。它没有获取专辑名称和歌手详细信息。

建议我该怎么做?

试试这个

{% block content %}
  <h1>name: {{object.name}}</h1>
  <p><strong>Singer: {{object.singer.name}}</strong></p>
{% endblock %}
class DetailView(generic.DetailView):
    model = Albums
    template_name = 'detailview.html'

这是行不通的,您必须首先获得这样的上下文

def get_context_data(self, **kwargs):
        // Call the base implementation first to get a context
        context = super().get_context_data(**kwargs)
        // Add in a QuerySet of all the books
        context['Album_list'] = Albums.objects.all()
        return context

你也可以

context_object_name = 'publisher'
queryset = Publisher.objects.all()