Django 3:AttributeError:'AdminSite'对象没有属性'Register' [关闭]

Posted

技术标签:

【中文标题】Django 3:AttributeError:\'AdminSite\'对象没有属性\'Register\' [关闭]【英文标题】:Django 3: AttributeError: 'AdminSite' object has no attribute 'Register' [closed]Django 3:AttributeError:'AdminSite'对象没有属性'Register' [关闭] 【发布时间】:2020-08-23 01:56:13 【问题描述】:

AttributeError: 'AdminSite' 对象没有属性 'Register'

当我进行迁移并打开我的管理部分以添加虚拟信息和图像时,我收到了错误。

admin.site.Register(Bet, BetAdmin)

到目前为止,我所做的是删除并按回车键,看看是否是类上的缩进错误。

我还安装了 pylint 以根据建议的答案查看有关错误的更多详细信息。

Class has no objects member

pip install pylint-django

然后我添加到我的settings.json

   
    "terminal.integrated.shell.windows": "C:\\WINDOWS\\Sysnative\\WindowsPowerShell\\v1.0\\powershell.exe",
    "workbench.colorTheme": "PowerShell ISE",
    "python.pythonPath": "C:\\Users\\taylo\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe",
    "json.schemas": [

    ],
    "python.linting.pylintArgs": [
        "--load-plugins=pylint_django"
    ],

    "[python]": 

    


但它并没有解决任何与问题相关的问题。

仅供参考:我在堆栈上进行了一堆搜索和查看,但解决方案看到了拼写错误在哪里拼写错误与 q 类似 reqister 而不是 register 拼写错误。

完整的终端错误

(venv) PS C:\Users\taylo\django\pybet_project> python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\core\management\__init__.py", line 377, in execute
    django.setup()
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\apps\registry.py", line 122, in populate
    app_config.ready()
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\contrib\admin\apps.py", line 24, in ready
    self.module.autodiscover()
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\contrib\admin\__init__.py", line 26, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\utils\module_loading.py", line 47, in autodiscover_modules     
    import_module('%s.%s' % (app_config.name, module_to_search))
  File "C:\Users\taylo\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\taylo\django\pybet_project\bets\admin.py", line 8, in <module>
    admin.site.Register(Bet, BetAdmin)
  File "C:\Users\taylo\django\pybet_project\venv\lib\site-packages\django\utils\functional.py", line 225, in inner
    return func(self._wrapped, *args)
AttributeError: 'AdminSite' object has no attribute 'Register'
(venv) PS C:\Users\taylo\django\pybet_project> 

admin.py

from django.contrib import admin
from .models import Bet


class BetAdmin(admin.ModelAdmin):
    list_display = 'home_team', 'away_team', 'home_team_odds', 'draw_odds', 'away_team_odds'

admin.site.Register(Bet, BetAdmin)

models.py

from django.db import models

class Bet(models.Model):
    home_team = models.CharField(max_length=255)
    home_team_logo = models.ImageField(upload_to='logos')
    away_team = models.CharField(max_length=255)
    away_team_logo = models.ImageField(upload_to='logos')
    home_team_odds = models.DecimalField(max_digits=3, decimal_places=2)
    draw_odds = models.DecimalField(max_digits=3, decimal_places=2)
    away_team_odds = models.DecimalField(max_digits=3, decimal_places=2)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('new', views.new, name='new')
]

views.py

from django.shortcuts import render
from .models import Bet

def index(request):
    bets = Bet.objects.all()
    return render(request, 'bets/index.html', 'bets: bets')

【问题讨论】:

应该是 admin.site.register(Bet, BetAdmin) 而不是 admin.site.Register(Bet, BetAdmin) 非常感谢工作感谢您有很多其他错误,但会尝试排序。 【参考方案1】:

admin.site.register() - R 必须小写

【讨论】:

感谢这个工作。

以上是关于Django 3:AttributeError:'AdminSite'对象没有属性'Register' [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

django-AttributeError: 'str' object has no attribute 'decode'

Django 1.8 AttributeError:模块没有属性'urls'

django - AttributeError:'AnonymousUser'对象没有属性'todo'

Django 2.2 + AttributeError:'str'对象没有属性'decode'

AttributeError:模块'django.db.models'没有属性'DataField'[关闭]

AttributeError:模块 'django.contrib.postgres.fields' 没有属性 'JSONField'