Django-如何通过遍历数据库查询来创建表单字段?

Django-如何通过遍历数据库查询来创建表单字段?,django,forms,django-models,django-forms,django-views,Django,Forms,Django Models,Django Forms,Django Views,因此,我想根据存储在数据库中的值设置一个表单 假设我有一个这样的模型: class Questions(models.Model): question = models.CharField(max_length=350) **form.py** class QuestionsForm(forms.Form): question = forms.ChoiceField(max_length=100) answer= forms.CharField(max_length=

因此,我想根据存储在数据库中的值设置一个表单

假设我有一个这样的模型:

class Questions(models.Model):
    question = models.CharField(max_length=350)
**form.py**

class QuestionsForm(forms.Form):
    question = forms.ChoiceField(max_length=100)
    answer= forms.CharField(max_length= 255, widget=forms.Textarea)

def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
                 initial=None, error_class=ErrorList, label_suffix=None,
                 empty_permitted=False): #import Errorlist
        super(QuestionsForm, self).__init__(data, files, auto_id, prefix, initial, error_class,
                                       label_suffix, empty_permitted)
        self.fields['question'].choices = for x.question in Questions.objects.all()
我想用这种方式创建一个表单:

for x in Questions:
   answer = forms.CharField(label = x.question)

因此,表单中的答案字段数量与数据库中存储的问题数量完全相同。有什么想法吗?

使用foreignkey创建一个中介表,对问题进行分组,并为中介创建一个内联表单集:

class Quiz(models.Model):
    question = models.CharField(max_length=50)

class Question(models.Model):
    quiz = models.ForeignKey(Quiz)
    question = models.CharField(max_length=350)

quiz = Quiz.objects.get(id=1)

QuestionFormSet = inlineformset_factory(Quiz, Question)
formset = QuestionFormSet(instance=quiz)
您可以这样尝试:

class Questions(models.Model):
    question = models.CharField(max_length=350)
**form.py**

class QuestionsForm(forms.Form):
    question = forms.ChoiceField(max_length=100)
    answer= forms.CharField(max_length= 255, widget=forms.Textarea)

def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
                 initial=None, error_class=ErrorList, label_suffix=None,
                 empty_permitted=False): #import Errorlist
        super(QuestionsForm, self).__init__(data, files, auto_id, prefix, initial, error_class,
                                       label_suffix, empty_permitted)
        self.fields['question'].choices = for x.question in Questions.objects.all()

我会在模板中而不是在表单中这样做。您可以轻松地迭代模板中的问题。