首页 > 解决方案 > 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:“选择”对象没有属性“模型”

我很确定这是一个简单的错误,但我找不到解决方案:-(

谢谢。

标签: pythondjangodjango-models

解决方案


.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)

推荐阅读