python - Django AttributeError:类型对象“房间”没有属性“对象”
问题描述
尝试在模式中查询或添加任何数据时,我收到错误消息type object 'Rooms' has no attribute 'objects'
。这是我所拥有的:
主页/models.py:
class Rooms(models.Model):
room_no = models.AutoField(primary_key=True)
room_name = models.TextField(max_length=40)
主页/url.py:
from django.urls import path
from .views import HomePage, EnergyGeneration, RoomPage
urlpatterns = [
path('', HomePage.as_view(), name='homepage'),
path('energy', EnergyGeneration.as_view(), name='energygeneration'),
path('room/<int:room_no>/', RoomPage.as_view(), name='roompage'),
]
MainProjectApp/urls.py:
from django.contrib import admin
from django.urls import path, include
from .forms import UpdatedLoginView
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('Home.url')),
path('accounts/login/', UpdatedLoginView.as_view()),
path('accounts/', include('django.contrib.auth.urls')),
]
主页/views.py:
from Home.models import Rooms, Plugs, PlugElectricityConsumption, EnergyGeneration, EnergyMode, Battery, PowerTransaction, PowerGeneration
class HomePage(TemplateView):
template_name = 'home/index.html'
def get(self, request, *args, **kwargs):
rooms = Rooms.objects.all()
......
......
return render(request, self.template_name)
这是错误的完整堆栈跟踪:
Traceback (most recent call last):
File "E:\Uni\Year 3\Professional Development\Esteem_v2\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "E:\Uni\Year 3\Professional Development\Esteem_v2\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "E:\Uni\Year 3\Professional Development\Esteem_v2\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "E:\Uni\Year 3\Professional Development\Esteem_v2\venv\lib\site-packages\django\views\generic\base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "E:\Uni\Year 3\Professional Development\Esteem_v2\venv\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "E:\Uni\Year 3\Professional Development\Esteem_v2\Home\views.py", line 62, in get
rooms = Rooms.objects.all()
Exception Type: AttributeError at /
Exception Value: type object 'Rooms' has no attribute 'objects'
如果我尝试从 Python 控制台查询这些模式,它可以工作:
from Home.models import Rooms
Rooms.objects.all()
<QuerySet [<Rooms: Rooms object (1)>]>
但在 Django 中却没有。我无法弄清楚发生了什么。
编辑
这是 print(type(Rooms)) 和 print(dir(Rooms)) 的结果:
<class 'type'>
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__mod
ule__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_allowed_methods', 'as_view', 'content_type', 'dis
patch', 'extra_context', 'get', 'get_context_data', 'get_template_names', 'http_method_names', 'http_method_not_allowed', 'options', 'render_to_response', 'response_class', 'setup', 'template_engine
', 'template_name']
解决方案
考虑到您正在使用 TemplateView,您可能不想使用 get() 而不是覆盖 get_context_data
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['rooms'] = Rooms.objects.all()
return context
推荐阅读
- node.js - 在 Node js 中安装 express 包时,出现错误
- html - 打字稿在检查重复项时,它也考虑了空白
- asp.net-core - 在没有事务的情况下运行 SQL
- module - 如何通过代码使我的自定义模块在应用切换器 odoo12 中可见
- python - 如何使用 python/pandas 从 href 获取 href 链接
- cider - 在 emacs/cider 中打开 leiningen 项目会引发类路径错误
- android - 在用户通过“Ok Google,让我在线”等语音请求后,如何在谷歌助手中显示我的“应用操作”?
- rest - HTTP GET 仅我需要的对象列表的最佳实践是什么
- c++ - 用于多个进程读/写的一个系统 v 消息队列问题
- linux - 无法在 .gitconfig 文件中添加(任何)全局 git 配置