问题 Python错误:未定义名称“admin”


我是第一次在Django中创建一个Python应用程序。我知道我必须取消注释urls.py中的管理工具,我已经这样做了。我还补充说 autodiscover。每次我尝试向管理面板添加新功能时,都会收到以下错误:

“NameError:名称'admin'未定义”

以下是我在模型中使用的代码,用于添加到管理面板:

class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3

    class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]

这是我正在使用的python终端中的代码

admin.site.register(Poll, PollAdmin)

这是我的urls.py中的代码:

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'iFriends.views.home', name='home'),
    # url(r'^iFriends/', include('iFriends.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    )

任何人都知道为什么它找不到管理员名称?

编辑

这是我的整个模型文件:

from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def __unicode__(self):
        return self.question
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

    class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField()
    def __unicode__(self):
        return self.choice_text


#COMMENTED OUT UNTIL I FIX THE ADMIN NAME
from django.config import admin

class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3

    class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]

#ADD THIS TO THE MAIN PYTHON FUNCTION
admin.site.register(Poll, PollAdmin)

4717
2017-09-07 03:38


起源

你的INSTALLED_APPS中是'django.contrib.admin'吗? - Marat
是的。我已经使用相同的方法向管理面板添加了“民意调查”部分。现在它不起作用 - Ty Bailey


答案:


from django.config import admin 应该 from django.contrib import admin


9
2017-09-07 04:52





在你的顶部 **url.py** 文件,添加以下代码

from django.contrib import admin
admin.autodiscover()

因此,特定块应该类似于以下内容


from django.conf.urls import patterns, include, url
**from django.contrib import admin
admin.autodiscover()**

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'examplesite.views.home', name='home'),
    # url(r'^examplesite/', include('examplesite.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    #url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
**url(r'^admin/', include(admin.site.urls)),**

)

4
2018-05-03 21:06





经过漫长而痛苦的探索来解决这个愚蠢的问题之后,我终于找到了答案!另一个Django程序员遇到了同样的问题并发现了这个问题:

在ChoiceInLine的父母(你在教程中你会看到'admin.StackedInline')中,堆叠的内联不应该被资本化......就像那样简单......谢谢你很多Karen Tracey ......

http://grokbase.com/p/gg/django-users/133v4wx0sx/django-1-5-tutorial-error-module-has-no-attribute-stackedinline


1
2017-08-01 00:07



这回答了这个问题吗? StackedInline 似乎在问题中正确地大写了。 - Don Cruickshank


我改变了我的urls.py ...这应该是基本格式

from django.conf.urls import  include, url
from django.contrib import admin

admin.autodiscover()
urlpatterns = [
     url(r'^admin/', include(admin.site.urls)),
    ]

1
2017-11-21 19:34





我怀疑你没有 from django.contrib import admin 在您定义的模型文件中 ModelAdmin 类, class ChoiceInline(admin.StackedInline):


0
2017-09-07 03:59



是的我有,请看我的编辑。 - Ty Bailey


您应该将管理代码(#COMMENTED OUT后直到我修复管理员名称后的所有内容)放到admin.py中


0
2017-09-07 04:47