如何在django admin中仅标记一个表单集?

如何在django admin中仅标记一个表单集?,django,django-admin,django-forms,Django,Django Admin,Django Forms,我有以下(简化)模型: class Question(models.Model): question = models.CharField(max_length=60) class Choices(models.Model): question = models.ForeignKey(Question) text = models.CharField(max_length=60) is_correct = models.BooleanField(default=F

我有以下(简化)模型:

class Question(models.Model):
    question = models.CharField(max_length=60)
class Choices(models.Model):
    question = models.ForeignKey(Question)
    text = models.CharField(max_length=60)
    is_correct = models.BooleanField(default=False)
我已经做了选择,作为一个问题的内联(在管理)。有没有办法确保只有一个选项是正确的

理想情况下,当它显示在管理表单集中(表格行)时,is_correct将显示为单选按钮

我的admin.py有:

from django.contrib import admin

class OptionInline(admin.TabularInline):
    model = Option
    extra = 5
    max_num = 5

class QuestionAdmin(admin.ModelAdmin):
    inlines = [OptionInline, ]

admin.site.register(QType)
admin.site.register(Question, QuestionAdmin)
我(不太理想)的解决方案是向表单集添加验证,如果选中多个复选框,则显示验证错误:

将此添加到my admin.py:

从django.forms.models导入BaseInlineFormSet 从django.forms.util导入验证错误

从模型导入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."
我的课堂选项在线变成:

class OptionInline(admin.TabularInline):
    model = Option
    extra = 5
    max_num = 5
    formset = OptionFormSet