我的admin.TabularInline类返回异常:object没有属性' urls'

时间:2014-02-13 19:41:53

标签: python django django-admin django-urls

所以我一直在谷歌搜索,无法找到解决问题的方法。老实说我很困惑,所以谢谢你看看。

mysite的/ mysite的/ urls.py:

...
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
                         url(r'^admin/', include(admin.site.urls)),
...

mysite的/ upgradelists / admin.py:

from django.contrib import admin
from upgrademe.models import GPU, CPU

class CPUAdmin(admin.TabularInline):
    model = CPU

admin.site.register(CPU, CPUAdmin)

返回错误:

AttributeError at /admin/
'CPUAdmin' object has no attribute 'urls'

但是,如果我将admin.py更改为:

class CPUAdmin(admin.ModelAdmin):
    model = CPU

然后一切都很好。 (虽然,不相关的说明:我相信'model = CPU'部分是多余的?)

对此的任何帮助/见解将不胜感激。谷歌让我感到难过,而对StackOverflow的搜索却没有发现任何我能看到的相关内容。

6 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,Google引导我进入这个主题并且它没有帮助。我在发布问题时解决了这个问题。

我甚至不知道你遇到的问题是否相同,但现在是:

class UserAnswerInline(admin.TabularInline):
    model = UserAnswer
class UserQuestionAdmin(admin.ModelAdmin):
    inlines = [UserAnswerInline]
admin.site.register(UserQuestion, UserAnswerInline)

正确的代码:

class UserAnswerInline(admin.TabularInline):
    model = UserAnswer
class UserQuestionAdmin(admin.ModelAdmin):
    inlines = [UserAnswerInline]
admin.site.register(UserQuestion, UserQuestionAdmin)

发现差异?是的,错误的对象名称。在我决定创建一个关于SOF的新问题之前5个小时,我在解释我的问题时想出来了。

答案 1 :(得分:4)

我有同样的问题。

您可以尝试此操作来解决此问题:

class CPUInline(admin.TabularInline):
    model = CPU

class CPUAdmin(admin.ModelAdmin):
    inlines = [CPUInline]

admin.site.register(CPU, CPUAdmin)

答案 2 :(得分:1)

您无法直接向管理网站注册表格管理类。 TabularAdmin是InlineAdmin的子类,因此仅用于完整ModelAdmin的inlines属性。

答案 3 :(得分:1)

内联只能在modelAdmin中使用,这就是您收到该错误的原因。根据我对您的代码的理解,您需要编写代码。

class CPUInline(admin.TabularInline):
    model = CPU
@admin.register(CPU)
class CPUAdmin(admin.ModelAdmin):
    inlines = [CPUInline]

答案 4 :(得分:0)

其他答案都是正确的。本质上,违规行是admin.site.register(CPU, CPUAdmin)

由于此模型已内联包含在另一个模型中(我假设它是GPU,因为它是您要导入的唯一其他模型),因此您不应该注册它,而应该注册它将​​被注册的模型内联因此,从admin.py中删除注册行将修复object has no attribute 'urls'

答案 5 :(得分:0)

这个错误恰好来自您最不期望的部分。

您不能在管理站点中注册 InlineModelAdmin 或其子类。您只能在 ModelAdmin 类的属性中使用它们。

这是导致此类错误的最常见原因,而且很难发现