【问题标题】:How do I do admin inlines in Django 1.0?如何在 Django 1.0 中进行管理内联?
【发布时间】:2010-10-06 16:39:06
【问题描述】:

我正在研究我拥有的 Django 书中的示例,但这本书是为 0.96 编写的,而我使用的是 1.0.2,是的,我知道,这不是最好的主意。但是阅读 Django 的“将您的应用程序从 0.96 移植到 1.0”文档已经为我清除了大部分差异。直到我需要在管理页面上实现第二个模型的内联编辑。

我正在使用自定义关键字搜索模型来允许您搜索使用 Django 的 Flatpages 应用程序制作的页面。下面是模型:

class SearchKeyword(models.Model):

    keyword = models.CharField(max_length=50, blank=True)
    page = models.ForeignKey(FlatPage)

    def __unicode__(self):
        return self.keyword

我的 admin.py 应该是什么样子才能为显示在 Flatpages 管理页面上的 SearchKeyword 设置 StackedInline?

【问题讨论】:

  • 我真的很想强调 django 文档是多么的棒。您应该阅读它们并丢弃过时的书。
  • ...并在本书即将出版的第二版中阅读。可在线获取。

标签: django django-admin


【解决方案1】:

你可以这样做:

class SearchKeywordInline(admin.StackedInline):
    model = SearchKeyword
    extra = 3

class FlatPageAdmin(admin.ModelAdmin):
    inlines = [SearchKeywordInline]

# unregister the FlatPage model from the admin site so I can
# register it again with the inline stuff (Thanks Carl & Jason)
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)

更多信息在官方Django docs

更新:修正代码以满足您的要求。

【讨论】:

  • hrm,这基本上是我所拥有的,但它不起作用,在我复制你的代码后仍然不起作用。估计还有什么问题……
  • 使用上面的代码(一旦你将 FlatpageAdmin 修复为 FlatPageAdmin)我猜你会得到一个 AlreadyRegistered 错误;您可能需要先 admin.site.unregister(FlatPage)。你可能还想从 contrib/flatpages/admin.py 中继承你的 FlatPageAdmin
  • 我确实短暂地看到了一个 AlreadyRegistered 错误,但是当我刷新页面时它就消失了。我会试试注销位,谢谢。
  • 修复了 Flatpage/FlatPage 错字。
  • 使用 Carl 建议修复我的 admin.site.unregister(Flatpage)。
【解决方案2】:

这是我正确运行后的代码。谢谢大家的帮助

from cms.search.models import SearchKeyword
from django.contrib.flatpages.models import FlatPage
from django.contrib import admin

class SearchKeywordInline(admin.StackedInline):

    model = SearchKeyword
    extra = 3

class FlatPageAdmin(admin.ModelAdmin):

    inlines = [SearchKeywordInline]


# unregister the FlatPage model from the admin site so I can
# register it again with the inline stuff.
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)

【讨论】:

    【解决方案3】:

    退房 link text 我认为这会成功

    【讨论】:

      猜你喜欢
      • 2021-08-28
      • 2017-04-12
      • 2011-04-10
      • 2015-06-21
      • 2012-04-07
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多