模型FlatPage已经注册

时间:2012-01-26 03:57:09

标签: python django

我正试图通过Practical Django Projects工作。它看起来有点旧,但我已经设法将代码转换到这一点。

此时本书希望我将models.py更改为:

class SearchKeyword(models.Model)
    keyword = models.CharField(maxlength=50, core=True)
    page = models.ForeignKey(FlatPage, edit_inline=models.STACKED,
                             min_num_in_admin=3, num_extra_on_change=1)

我知道现在已经在admin.py中完成了。所以我的models.py看起来像这样:

from django.db import models
from django.contrib.flatpages.models import FlatPage

class SearchKeyword(models.Model):
    keyword = models.CharField(max_length=50)
    page = models.ForeignKey(FlatPage)

    class Admin:
        pass

    def __unicode__(self):
        return self.keyword

我现在创建的admin.py看起来像这样:

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

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

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

admin.site.register(FlatPage, FlatPageAdmin)

当我加载管理页面时,我会收到:

AlreadyRegistered at /admin/

The model FlatPage is already registered

Exception Value:The model FlatPage is already registered

谢谢!

1 个答案:

答案 0 :(得分:7)

您必须先取消注册,因为应用程序本身附带admin.py

admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)