2

ジャンゴモデルは次のとおりです。

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管理者を可能な限り利用しようとしています.ここで表現しようとしているのとまったく同じようにこれを見たと思いますが、どこにあるか思い出せません.

4

1 に答える 1

0

私はあなたの質問を理解しているので、あなたは以下を使うべきです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]
于 2012-10-09T14:50:18.110 に答える