Администратор django - заставляет пользователей создавать новые записи, а не использовать существующие

Вот модель Джанго:

class Question(models.Model):
    text = models.TextField(verbose_name=u'Вопрос')
    is_free_text = models.BooleanField(verbose_name=u'Ответ в виде текста?')
    options = models.ManyToManyField('QuestionOption', related_name='option',null=True, blank=True)

и варианты модели, которую он использует:

class QuestionOption(models.Model):
    text = models.TextField(verbose_name=u'Вариант ответа')
    score = models.IntegerField()

Администратор Django, когда вы попытаетесь добавить новый Вопрос, покажет вам форму, в которой вы можете ввести текст вопроса, отметьте флажок is_free_text и список с существующими опциями и значки плюс, чтобы позволить вам добавлять новые.

Есть ли способ отключить это поведение и заставить пользователей всегда добавлять новые опции вместо возможности выбирать уже существующие? В идеале я не хочу, чтобы они видели существующие варианты, поскольку это иногда сбивает с толку. Как строка текста и текстовое поле для оценки и значок плюса, чтобы добавить новую запись текста опции и ее оценки?

Я пытаюсь максимально использовать существующего администратора django, и я думаю, что видел, что это сделано именно так, как я пытаюсь выразить здесь, но не могу вспомнить где.

1 ответ

Решение

Как я понимаю ваш вопрос, вы должны использовать InlineModelAdmin:

class QuestionOptionInline(admin.StackedInline):
    model = QuestionOption

    extra = 1 # show only one QuestionOption form

    def queryset(self, request):
         # hack: don't show existed QuestionOption
         return QuestionOption.objects.none()

class QuestionAdmin(admin.ModelAdmin):
    fields = ['text', 'is_free_text']
    inlines = [QuestionOptionInline]
Другие вопросы по тегам