python - Django 教程 - 运行“python manage.py xyz”时笔记本电脑 Django 出现问题 -> AttributeError: 'Choice' object has no attribute 'model'
问题描述
我正在关注关于 Django 的 Coursera 课程以及 Django 教程。Coursera 课程在 Pythonanwhere 上运行。现在我想出了在我的 MacAir 上运行它的想法。因此,我创建了一个 Conda 环境,并按照 Pythonanywhere 的所有步骤进行操作。但是每当我运行“python manage.py ....”之类的东西时,我都会收到这个错误:
AttributeError:“选择”对象没有属性“模型”
编辑:
回溯(最后一次调用):文件“manage.py”,第 21 行,在 main()
文件“manage.py”,第 17 行,在 main execute_from_command_line(sys.argv)
文件“/opt/anaconda3/envs/Django /lib/python3.6/sitepackages/django/core/management/init .py ”,第 401 行,在 execute_from_command_line utility.execute() 中。
文件“/opt/anaconda3/envs/Django/lib/python3.6/site-packages/django/core/management/init .py ”,第 395 行,在执行 self.fetch_command(subcommand).run_from_argv(self.argv)
文件“/opt/anaconda3/envs/Django/lib/python3.6/site-packages/django/core/management/base.py”,第 328 行,在 run_from_argv self.execute(*args, **cmd_options)
文件“/opt/anaconda3/envs/Django/lib/python3.6/site-packages/django/core/management/base.py”,第 369 行,执行输出 = self.handle(*args, **options)
文件“/opt/anaconda3/envs/Django/lib/python3.6/site-packages/django/core/management/commands/check.py”,第 64 行,在句柄中 fail_level=getattr(checks, options['fail_level' ]),
文件“/opt/anaconda3/envs/Django/lib/python3.6/site-packages/django/core/management/base.py”,第 395 行,检查 include_deployment_checks=include_deployment_checks,
文件“/opt/anaconda3 /envs/Django/lib/python3.6/site-packages/django/core/management/base.py”,第 382 行,在 _run_checks 中返回 checks.run_checks(**kwargs)
文件“/opt/anaconda3/envs/Django/lib/python3.6/site-packages/django/core/checks/registry.py”,第 72 行,在 run_checks new_errors = check(app_configs=app_configs)
文件“/opt/ anaconda3/envs/Django/lib/python3.6/site packages/django/contrib/admin/checks.py”,第 53 行,在 check_admin_app errors.extend(site.check(app_configs))
文件“/opt/anaconda3/envs /Django/lib/python3.6/site-packages/django/contrib/admin/sites.py”,第 82 行,检查 app_configs 中的 modeladmin.model._meta.app_config 是否:
AttributeError:'Choice' 对象没有属性'模型'
经过研究,我终于从一个文件转到另一个文件并复制粘贴(除了一两个)。我什至将我的 Python 版本从 3.8 降级到 3.6.3。没有帮助。
我检查了拼写错误,最后做了复制粘贴。没什么':-(
这是我的民意调查/model.py:
from django.db import models
import datetime
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
编辑 2:投票/admin.py
from django.contrib import admin
# Register your models here.
from .models import Question, Choice
admin.site.register(Question, Choice)
与此同时,我将名称“Choice”更改为“Choices”只是为了得到错误消息:
AttributeError:“选择”对象没有属性“模型”
我很确定这是一个简单的错误,但我找不到解决方案:-(
谢谢。
解决方案
.register(…)
[Django-doc]中的第二个参数是可选的ModelAdmin
,而不是额外的模型。如果要添加额外的,请额外调用.register(…)
:
from django.contrib import admin
# Register your models here.
from .models import Question, Choice
admin.site.register(Question)
admin.site.register(Choice)
推荐阅读
- laravel - 发生 Laravel 迁移不兼容错误。但两种类型似乎都兼容
- google-cloud-platform - 尽管允许防火墙中的端口,iperf3 仍无法正常工作
- python - Dash 输入、输出组件属性
- python - 谷歌云平台中的字符串到浮点转换问题
- angular - 当用户在 Angular 应用程序中手动输入访问被拒绝的 URL 时,如何避免导航到访问被拒绝的页面
- javascript - 我如何理解这 2 段代码?
- c - Ace Editor 是否可以使用 C 语言编译代码?
- python - Twitter/Reddit 帖子未正确嵌入 Django 模板
- tsql - 协调 TSQL PERCENT RANK() 与 Excel 等效项
- tensorflow - Tensorflow 嵌入层内部的网络结构是什么?