【问题标题】:Saving a StackedInline foreign keyed model before primary model in Django Admin在 Django Admin 中的主模型之前保存 StackedInline 外键模型
【发布时间】:2010-09-20 20:05:05
【问题描述】:

我有四个具有关系的模型

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 方法中),我检查 [key for key in 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 被调用时我有我需要的信息,但是覆盖这是正确的事情,或者是否有一些选项/方法会更好地覆盖它我迷路了?

【问题讨论】:

    标签: python django django-models django-admin


    【解决方案1】:

    看着 S. Lott 对各种 django 相关线程的明智建议,我决定自己编写一个应用程序来完成这项工作,而不是强迫 django 管理员做一些不该做的事情。老实说,我会为 django 下载一个像样的 CMS,但我能找到的那些要么很烂(他们的代码充满了类型检查,有标签缩进等),要么在 1.2 上不工作,所以我自己滚动。

    【讨论】:

      猜你喜欢
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 2012-08-04
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多