如何从外键关系创建Django表单?

时间:2012-06-20 10:34:08

标签: python django django-forms

我想创建一个多选问题表单,其中外键指向该问题的所有选项都显示为复选框。

从类似的问题中,我收集了子类ModelForms可能是这样做的方法。但我无法弄清楚如何将特定question_id传递给ModelForm

目前,我正在尝试以下方法:

来自model.py

class Question(models.Model):
    question = models.CharField(max_length=200)
    creationDate = models.DateTimeField('date published')
    author = models.ForeignKey(User)
    def __unicode__(self):
        return self.question

class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice = models.CharField(max_length=200)
    correct = models.BooleanField()
    def __unicode__(self):
    return self.choice

所以在forms.py中,我试图创建这样一个表单:

class QuestionForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(QuestionForm, self).__init__(*args, **kwargs)
        question_id = kwargs.pop('question')
        self.fields['checkboxes'] = forms.ModelChoiceField(
             queryset = Choice.objects.filter(question = question_id))

views.py中,我创建了一个QuestionForm,将question_id作为构造函数参数传递。 但是我在QuestionForm中得到一个NameError "name 'question_id' is not defined,其中构造了MOdelChoiceField。

1 个答案:

答案 0 :(得分:0)

docs关于Meta类的讨论:

class ArticleForm(ModelForm):
    class Meta:
        model = Article

有帮助吗?