【问题标题】:Django - Creating form fields by iterating through data in my database?Django - 通过遍历我的数据库中的数据来创建表单字段?
【发布时间】:2014-04-29 19:42:44
【问题描述】:

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

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

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

class Answers(models.Model):
    question = models.ForeignKey(Questions)
    answer = models.CharField(max_length=350)

我想以这种方式创建一个表单:

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

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

【问题讨论】:

  • 我最近有一个类似的问题。看看这是否有助于stackoverflow.com/questions/23275562/…。在您的字典中,键是问题对象,值是相关答案对象的查询集。
  • @souldeux,令人惊讶的是,它确实有帮助!它把我引向了 ModelChoiceField/ChoiceField,这基本上是解决这个问题的关键。它还向我展示了字段的迭代在 init 中进行,而不仅仅是在表单类中松散。我将在下面发布我的解决方案,以防有人可以帮助我找到更清洁的解决方案。谢谢!

标签: python django python-3.x django-models django-forms


【解决方案1】:

这是我想出的解决方案。似乎工作正常,但我觉得我缺少一个更清洁的解决方案。

在我的 forms.py 中:

class AnswerForm(forms.Form):
    def __init__(self, *args, **kwargs):
         super(AnswerForm, self).__init__(*args, **kwargs)

         for x in Questions.objects.all():
         self.fields[x.question] = ModelChoiceField(queryset=.....

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多