Администратор 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]