簡體   English   中英

在Django Admin中將StackedInline外鍵模型保存在主模型之前

[英]Saving a StackedInline foreign keyed model before primary model in 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中的密鑰的鍵和page.text_fields中[text_field.key for text_field in page.text_fields]匹配,以便將所有文本鍵都填入我的文本。 我遇到的問題是在調用cleanpage.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時我掌握了所需的信息,但是將其覆蓋是正確的做法,或者是否有一些選項/方法可以更好地覆蓋我失蹤?

考慮到S. Lott對各種與Django相關的線程的明智建議,我決定自己編寫一個應用程序來執行此操作,而不是強迫django管理員執行原本不該執行的操作。 老實說,我只是為django下載一個不錯的CMS,但是我發現它們很爛(它們的代碼充斥着類型檢查,縮進制表符等)或在1.2上不起作用,所以我自己動手做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM