Сохранение модели с внешним ключом StackedInline перед основной моделью в Django Admin - PullRequest
0 голосов
/ 21 сентября 2010

У меня есть четыре модели со связями

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 голосов
/ 25 сентября 2010

Взглянув на мудрый совет С. Лотта по различным темам, связанным с django, я решил написать приложение, чтобы сделать это самостоятельно, вместо того, чтобы заставлять администратора django делать то, чего он не должен был делать. Честно говоря, я бы просто скачал приличную CMS для django, но те, которые я могу найти, либо отстой (их код пронизан проверкой типов, имеет отступ с вкладками и т. Д.), Либо не работают на 1.2, так что я катаюсь на своих. 1001 *

...