首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >get_object_or_404()的第一个参数必须是模型,而不是'function‘

get_object_or_404()的第一个参数必须是模型,而不是'function‘
EN

Stack Overflow用户
提问于 2019-06-12 01:17:52
回答 2查看 339关注 0票数 0

get_object_or_404()的第一个参数必须是模型、管理器或QuerySet,而不是'function‘。

我试图根据数据库中的平板电脑显示平板电脑的详细信息,但它一直显示此ValueError。有人能帮我找出我做错了什么吗?

这是我的views.py

from django.shortcuts import render, get_object_or_404
from .models import PharmaceuticalCapsules, PharmaceuticalSuspension, 
PharmaceuticalPowder, PharmaceuticalSyrup, \
PharmaceuticalTablet


def alltablet(request):
tablet = PharmaceuticalTablet.objects
return render(request, 'tablets.html', {'tablet': tablet})


def tabdetail(request, tab_id):
tabdetail = get_object_or_404(alltablet, pk=tab_id)
return render(request, 'tab_detail.html', {'tablet': tabdetail})

这是我的models.py

from typing import re
from django.db import models

class PharmaceuticalTablet(models.Model):
tab_name = models.CharField(max_length=100)
tab_image = models.ImageField(upload_to='image/', blank=True, null=True)
tab_dose_strength = models.CharField(max_length=100)
tab_pack = models.CharField(max_length=100)
tab_form = models.CharField(max_length=200)
tab_dose = models.CharField(max_length=100, default='Direction By Physician')
tab_storage = models.CharField(max_length=100)
tab_usage = models.CharField(max_length=100)
tab_brandname = models.CharField(max_length=100)
tab_composition = models.CharField(max_length=100)

def __str__(self):
    return self.tab_name

浏览器显示

ValueErrorat /tablet/1/
First argument to get_object_or_404() must be a Model, Manager, or QuerySet, not 'function'.
Request Method:
GET 
Request URL:
http://127.0.0.1:8000/tablet/1/ 

Django Version:
v2.2.1 

Exception Type:
ValueError 

Exception Value:
First argument to get_object_or_404() must be a Model, Manager, or QuerySet, not 'function'.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-12 03:36:36

tabdetail = get_object_or_404(PharmaceuticalTablet,pk=tab_id)

做出改变。您要识别的是模态,而不是函数。

票数 0
EN

Stack Overflow用户

发布于 2019-06-12 01:44:39

正如错误所示,您正在尝试向get_object_or_404(...)传递一个函数,而不是一个查询集或一个模型。我认为您应该使用PharmaceuticalTablet.objects.all(),除非您之前希望对其进行过滤。

def alltablet(request):
    tablet = PharmaceuticalTablet.objects
    return render(request, 'tablets.html', {'tablet': tablet})


def tabdetail(request, tab_id):
    tabdetail = get_object_or_404(PharmaceuticalTablet.objects.all(), pk=tab_id)
    return render(request, 'tab_detail.html', {'tablet': tabdetail})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56548790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档