Мое (не очень идеальное) решение состояло в том, чтобы добавить проверку в набор форм и отобразить ошибку проверки, если установлен более одного флажка:
добавил это в мой admin.py:
из django.forms.models import BaseInlineFormSet
из django.forms.util import ValidationError
из моделей импорт QType, вопрос, опция
class OptionFormSet(BaseInlineFormSet):
def clean(self):
if any(self.errors):
return
checked = 0
for i in range(0, self.total_form_count()):
form = self.forms[i]
if not form.cleaned_data.has_key('is_correct'):
continue
correct = form.cleaned_data['is_correct']
if correct:
checked = checked + 1
if (checked>1):
raise ValidationError, "Please select only one correct answer."
и мой класс OptionInline стал:
class OptionInline(admin.TabularInline):
model = Option
extra = 5
max_num = 5
formset = OptionFormSet