3

私は

class SurveyAnswer(models.Model):
    rel = models.ForeignKey(Survey)
    answer = models.CharField(max_length=150)
    def __unicode__(self):
        return self.answer

そして今、私はこの「答え」をフォームに事前入力したいと思います:

survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
form_data = {"question": survey.question, "answer1":survey.surveyanswer_set.get(xxx)}
form = SurveyForm(form_data)

たとえば、「Survey」(ForeignKey) に関連する最初の回答を取得するには、xxx をどうする必要がありますか。pk=1 で絶対数を取得します。

アップデート:

私は今やった

{% for i in survey.surveyanswer_set.all %}
    <p><label>Answer {{ forloop.counter }}:</label> <textarea id="id_answer{{ forloop.counter }}" rows="6" placeholder="Type an answer option" cols="45" name="answer{{ forloop.counter }}">{{ i.answer }}</textarea></p>
{% endfor %}

ビューでより良い方法を知っている人がいたら、ヒントを教えてください。

更新 2:

これはビューが少し良いです(しかし、もっと簡単な解決策が必要だと思います):

answers_part1 = []
for i in survey.surveyanswer_set.all():
    answers_part1.extend([i.answer])
answers_part2 = ["answer1", "answer2", "answer3", "answer4"]
answers = dict(zip(answers_part2, answers_part1))
form_data = {"question": survey.question}
form_data.update(answers)
form = SurveyForm(form_data)
4

1 に答える 1

5

必要に応じて、これを行うには 2 つの方法があります。

https://docs.djangoproject.com/en/dev/ref/forms/api/#dynamic-initial-values

または、フォームが ModelForm の場合は、インスタンス パラメーターを使用できます。

https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/

于 2012-12-13T15:31:17.133 に答える