Search code examples
pythondjangoweb-applicationsdetailviewdjango-class-based-views

DetailView is missing a QuerySet Error. shouldnt it work with the primary key?


Quite new to this super nice django thing. Trying my best...

trying http://127.0.0.1:8000/angebot/1/ in my browser is supposed to show me the queryset with the primary key 1 from model Testkunde

do i need to define a queryset in the detailview ?? normally with model = Testkunde this should be done ??

would really appreciate any help ! thanks in advance!

views.py

class TestkundeDetailView(DetailView):
    model = Testkunde
    template_name = 'angebot/detail.html'
    context_object_name = 'testkunde_list'

urls.py

urlpatterns = [
    #path('', angebot_views.testkunde_list, name='testkunde_list'),
    path('', angebot_views.TestkundeListView.as_view(), name='angebot-list'),
    path('<int:pk>/', angebot_views.DetailView.as_view(), name='angebot-detail'),
]

models.py

class Testkunde(models.Model):
    auswahl = (
        ('Ausw1', 'Ausw2'),
        ('Ausw2', 'ausw2'),
        ('Ausw3', 'ausw3'),
    )

    vname = models.CharField(max_length=250,default='vname')
    nname = models.TextField(default='default')
    tel = models.CharField(max_length=250,default='0664')
    ausw = models.CharField(max_length=10,choices=auswahl,default="Ausw1")
    datum = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.vname

    def get_absolute_url(self):
        return reverse('angebot:testkunde_list',)

Error:

ImproperlyConfigured at /angebot/1/ DetailView is missing a QuerySet. Define DetailView.model, DetailView.queryset, or override DetailView.get_queryset(). Request Method: GET Request URL: http://127.0.0.1:8000/angebot/1/ Django Version: 3.0.8 Exception Type: ImproperlyConfigured Exception Value:
DetailView is missing a QuerySet. Define DetailView.model, DetailView.queryset, or override DetailView.get_queryset(). Exception Location: C:\Users\berni\PycharmProjects\django_project\venv\lib\site-packages\django\views\generic\detail.py in get_queryset, line 73 Python Executable: C:\Users\berni\PycharmProjects\django_project\venv\Scripts\python.exe Python Version: 3.7.7 Python Path:
['C:\Users\berni\PycharmProjects\django_project\django_project', 'C:\Users\berni\AppData\Local\Programs\Python\Python37\python37.zip', 'C:\Users\berni\AppData\Local\Programs\Python\Python37\DLLs', 'C:\Users\berni\AppData\Local\Programs\Python\Python37\lib', 'C:\Users\berni\AppData\Local\Programs\Python\Python37', 'C:\Users\berni\PycharmProjects\django_project\venv', 'C:\Users\berni\PycharmProjects\django_project\venv\lib\site-packages'] Server time: Fri, 27 Nov 2020 08:19:51 +0000

I've been searching but can't find the mistake.


Solution

  • From what I can see, the problem is in your URLs pattern. Your URL for the angebot-detail is pointing to the actual DetailView rather than your TestkundeDetailView that you defined in your views.py file.

    You should update your angebot-detail url to the following:

    urlpatterns = [
        ...
        path('<int:pk>/', angebot_views.TestkundeDetailView.as_view(), name='angebot-detail'),
    ]
    

    Don't forget to import your TestkundeDetailView at the top.