【问题标题】:How to add a field into a third party app model in Admin?如何在 Admin 中将字段添加到第三方应用程序模型中?
【发布时间】:2016-04-27 11:37:56
【问题描述】:

我正在使用第三方应用程序 - django-quiz。由于模型Quiz 本身不包含字段Language,因此我在Language 模型中添加了OneToOneField(Quiz),这是我自己的模型。

在这个应用程序中,您可以在管理员中看到Quizes,但我在Quiz 选项卡中看不到Language 模型选择字段(我可以在Language 选项卡中看到Quiz 模型选项- 我想要相反)。我怎么做?我试图添加到admin.py 这段代码,但它会引发错误(可能是因为它是第三方应用程序)

from quiz.models import Quiz


class QuizInlineLanguage(admin.StackedInline):
    fields = Quiz.language

class QuizAdmin(ModelAdmin):
    inlines = [QuizInlineLanguage,]

admin.site.unregister(Quiz)
admin.site.register(Quiz, QuizAdmin)

已编辑,错误:

<class 'SolnguagesApp.admin.QuizAdmin'>: (admin.E105) 'SolnguagesApp.admin.QuizInlineLanguage' must have a 'model' attribute.

【问题讨论】:

  • 删除这一行,admin.site.unregister(Quiz)
  • 这就是问题所在:django.contrib.admin.sites.AlreadyRegistered:模型 Quiz 已经注册了,还有就是 QuizInlineLanguage 也不正确。

标签: python django django-admin


【解决方案1】:

在注册模型之前不要使用未注册的!

from quiz.models import Quiz


class QuizInlineLanguage(admin.StackedInline):
    fields = Quiz.language

class QuizAdmin(ModelAdmin):
    inlines = [QuizInlineLanguage,]

admin.site.register(Quiz, QuizAdmin)

【讨论】:

  • 这不起作用:django.contrib.admin.sites.AlreadyRegistered:模型测验已经注册我想 QuizInlineLanguage 也不正确,但我不知道该怎么做。
  • 测验不是来自这个应用程序,它来自第三方应用程序。
  • 检查你的应用和第三方应用的顺序,你能从你的设置中分享你的installed_Apps吗?
  • 测验应用程序在 myApp 之后,这是问题所在。但是,它并没有解决主要问题。我希望能够从管理员的测验选项卡内的语言实例中进行选择。
  • QuizInlineLanguage 和 QuizAdmin 类可能完全不正确。
猜你喜欢
  • 2016-08-21
  • 2012-06-16
  • 1970-01-01
  • 2021-08-06
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
相关资源
最近更新 更多