You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django报错:'function' object has no attribute 'objects' 求助

AttributeError: 'function' object has no attribute 'objects' in Django

你的错误根源在于models.py的缩进错误,导致data模型没有被Django正确识别,进而在视图中data被解析为函数而非模型类。结合你提供的代码,具体问题和修正方案如下:

问题1:models.py缩进错误

class Meta和def __str__没有嵌套在data类内部,而是作为全局类/函数存在,这会导致Django无法为模型初始化默认的objects管理器,甚至引发解析异常。

问题2:views.py缩进错误

return语句没有缩进在dashboard函数范围内,会导致函数无返回值,引发后续请求错误。


修正后的models.py

from django.db import models

class data(models.Model):
    id = models.IntegerField(default=1, unique=True, primary_key=True)
    name = models.CharField(max_length=50)
    location = models.CharField(max_length=50)
    date = models.DateField()

    # 将Meta类嵌套在data模型内
    class Meta:
        verbose_name_plural = 'datas'

    # 将__str__方法嵌套在data模型内
    def __str__(self):
        return self.name

修正后的views.py

from appplus.models import data
from django.shortcuts import render  # 补充render的导入(若之前遗漏)

def dashboard(request):
    last_added = data.objects.order_by('date')[:5]
    context_dict = {
        'last_added': last_added
    }
    # 修正return语句的缩进
    return render(request, 'appplus/home.html', context_dict)

额外建议

Django模型类名通常遵循大驼峰命名规范(如Data而非data),虽然不是强制要求,但能减少命名冲突风险,提升代码可读性。

内容的提问来源于stack exchange,提问作者R11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:15:37