Radio buttons in django admin
我正在Django创建一个测验应用程序。模型如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Quiz(models.Model): title = models.CharField(max_length=200) description = models.TextField() publish = models.BooleanField(default=False) def __unicode__(self): return self.title class Question(models.Model): quiz = models.ForeignKey(Quiz) question = models.TextField() hint = models.TextField() def __unicode__(self): return self.question class Option(models.Model): question = models.ForeignKey(Question) option = models.CharField(max_length=250) correct = models.BooleanField(default=False) def __unicode__(self): return self.title |
每个问题只能有一个答案。这就是问题所在。我还没有弄清楚如何为选项模型编写管理表单,这样对于每个问题,只有一个选项的correct=true。
我可以对每个问题使用单选按钮,但不知道如何限制它们,以便只能为一个外键选择一个。
我这样理解您的问题:您希望更改代码,因为只有一个选项是正确的。为什么不在问题中添加这一行:
1 | right_answer = models.ForeignKey(Option) |
像这样,你不需要布尔型的
我不确定第二部分是否会起作用,也不确定它是否是一个好方法,但第一部分是重要的一部分。
我不知道如何用反向查找来完成。
我知道这不是你想要的,但很接近。你能去行政部试试这个吗?
1 2 3 4 5 6 7 8 9 10 11 | admin.site.register(Quiz) #admin.site.register(Option) #Include this if required class OptionInline(admin.TabularInline): model = Option @admin.register(Question) class QuestionAdmin(admin.ModelAdmin): inlines = [ OptionInline, ] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class FooAdmin: form FooForm fields = ('gender', .....) class FooForm(forms.ModelForm): class Meta: model = Foo gender = ChoiceField( label = 'Options', choices = ( (0, 'Male'), (1, 'Female'), ), initial = 0, widget = RadioSelect, ) |
使用带有管理集成的radioselect小部件。
1 2 3 4 5 | class SimpleAdmin: ... form SimpleForm fields = (..., 'my_option', ...) ... |
使用其他选项创建表单:
1 2 3 4 5 6 7 8 9 10 11 12 | class SimpleForm(forms.ModelForm): class Meta: model = Simple my_option = ChoiceField( label = 'Options', choices = ( (0, 'num 0'), (1, 'num 1'), ), initial = 0, widget = RadioSelect, ) |
您可以在这里看到一个类似的示例,其中包含一个进入管理区域的图表。