2010-09-20 51 views
0

我有四个型号的关系Django中保存前主模型StackedInline外国键控型号联系

Model PagetTemplate(models.Model): 
    pass 

Model TextKey(models.Model): 
    page_template = models.ForeignKey(PageTemplate, related_name='text_keys') 


Model Page(models.Model): 
    page_template = models.ForeignKey(Pagetemplate, related_name='pages') 

Model Text(models.Model): 
    key = models.ForeignKey(TextKey, related_name='text_fields') 
    page = models.ForeignKey(Page, related_name='text_fields') 

的关系是这样的:

      PageTemplate 
           /\ 
          /\ 
          / \ 
         TextKey  Page 
           \ /
           \/
           \/ 
           Text 

在对页面的验证(在clean方法),我检查[page.page_template.text_keys中的键的键值]和[text_field.key for text_field in page.text_fields]是否匹配,以便所有文本键都填充到我的文本中。我遇到的问题是在调用clean时,page.text_fields为空。管理代码看起来像。

class TextInline(admin.StackedInline): 
    model = Text 
    extra = 0 

class PageAdmin(DebugModelAdmin): 
    inlines = [TextInline] 

admin.site.register(Page, PageAdmin) 

我在日志类包裹admin.ModelAdmin知道我有我需要的时候ModelAdmin.add_view被调用,但这种压倒一切正确的事情或者是有一些选项的信息/方法,这将是更好地重写我丢了?

回答

0

看着S.洛特对各种django相关主题的睿智建议,我决定自己编写一个应用程序来做这件事,而不是强迫django管理员去做一些本不该做的事情。老实说,我只是为django下载了一个体面的CMS,但是我可以找到那些可以吸引人的CMS(他们的代码充斥着类型检查,缩进标签等),或者不能在1.2上工作,所以我自己动手。