所以我一直在谷歌搜索,无法找到解决问题的方法。老实说我很困惑,所以谢谢你看看。
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的搜索却没有发现任何我能看到的相关内容。
答案 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 类的属性中使用它们。
这是导致此类错误的最常见原因,而且很难发现