在Django Admin中的主模型之前保存StackedInline外键模型

时间:2010-09-20 20:05:06

标签: python django django-models django-admin

我有四个关系模型

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时获得了所需的信息,但是正在覆盖这个正确的事情或是否有一些选项/方法更好地覆盖我错过的?

1 个答案:

答案 0 :(得分:0)

看看S. Lott对各种django相关线程的睿智建议,我决定自己编写一个应用程序,而不是强迫django管理员做一些不应该做的事情。老实说,我只是为django下载了一个体面的CMS,但是我可以找到的那些很糟糕(他们的代码充满了类型检查,缩进标签等)或者不适用于1.2,所以我自己动手。< / p>