2009-02-10 105 views
1

我正在通过我有的Django书中的例子,但这本书是为0.96编写的,我使用的是1.0.2,是的,我知道,不是最好的主意。但是阅读Django的“将应用程序从0.96移植到1.0”文档已经为我清除了大部分差异。直到我到了需要在管理页面上实现第二个模型的内联编辑为止。如何在Django 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模样成立了一个SearchKeyword StackedInline,显示出的flatpages管理页面上?

+0

我会真的,真的,想强调django文档有多棒。你应该阅读它们并放下过时的书。 – 2009-02-11 17:36:11

+0

...并在书写过程中阅读本书即将出版的第2版。在线提供。 – akaihola 2009-02-12 11:12:09

回答

3

你可以做这样的事情:

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

更新:修复了代码,以满足您的要求。

0

下面的代码,一旦我得到了它正常工作。感谢您的帮助球员

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)