Django Models и вопрос интерфейса администратора - PullRequest
1 голос
/ 17 мая 2011

Я готовлю экзаменационный сайт для моих учеников.Простой веб-сайт с использованием интерфейса администратора Django для создания Документа с вопросами.

У меня есть следующие модели:

class Paper(models.Model):
    name = models.CharField(max_length=2000, unique=False)
    short_desc = models.TextField(unique=False)

class Question(models.Model):
    text = models.TextField(unique=False)
    order = models.IntegerField(unique=True)
    paper = models.ForeignKey(Paper, unique=False)

При добавлении вопросов в статью я хочу, чтобы я могдобавьте вопрос из интерфейса администратора самой бумаги, щелкнув знак «+» или что-то вроде «добавить дополнительные вопросы» и т. д.

В моей текущей настройке мне нужно сначала создать статью, а затем перейти вИнтерфейс вопросов и добавляйте их один за другим (и, боже упаси), если я потеряю их order число.

Помните, что каждый Вопрос принадлежит бумаге, и здесь речь не идет о ManyToMany.* Нужно ли каким-либо образом изменять админа или я делаю это неправильно?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Интерфейс администратора имеет возможность редактировать модели на той же странице, что и родительская модель.Они называются встроенными.См. InlineModelAdmin

Создать QuestionInline:

class QuestionInline(admin.TabularInline):
    model = Question

и в PaperAdmin добавить:

class PaperAdmin(admin.ModelAdmin):
    ...
    inlines = [
        QuestionInline,
    ]
1 голос
/ 17 мая 2011

InlineModelAdmin - это то, что вам нужно. Подробнее см. http://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects

...