django管理员中的单选按钮
我正在django中创建一个测验应用程序。 这里是模型:
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
每个问题只能有一个答案。 这是问题出现的地方。我一直无法弄清楚如何编写Option模型的管理表单,因此对于每个问题,只有其中一个选项可以有正确的= True。
我可以为每个问题使用单选按钮,但不知道如何限制它们,以便只能为一个外键选择一个。
我不确定如何通过反向查找来完成。
我知道这不是你想要的,但是非常接近。 你可以继续在admin.py中试试这个
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,
]
我理解你的问题是这样的:你想改变你的代码,因为只有一个选项应该是正确的。 为什么不把这一行添加到问题中:
right_answer = models.ForeignKey(Option)
像这样,你不需要布尔correct
。 你也可以添加一个管理器给这个谁返回任何选项应该是可选的(你重写方法get_queryset()
,并且这个管理器应该在get_qeryset()这行: q.option_set.all()
其中q是有问题。 (没有这个选项,虽然它与另一个问题相匹配,但可以标记)。
我不确定第二部分是否会起作用,不管它是否是一种好方法,但第一部分是重要的一部分。
链接地址: http://www.djcxy.com/p/56511.html