【问题标题】:Django Models - how to pull data from 2 models and renderDjango 模型 - 如何从 2 个模型中提取数据并渲染
【发布时间】:2019-12-15 17:46:08
【问题描述】:

我正在使用 Django 构建一个类似调查的应用程序。我有 3 个模型(调查、问题、答案)。我需要查询问题模型并拉回问题加上每个问题的可能答案。 然后,我需要将其作为单个问题显示在 html 页面上,并在列表或其他元素中显示可能的答案。

Django==2.2.1 / Pillow==6.1.0/ pytz==2019.1/ sqlparse==0.3.0/ Python 3.7 我尝试从 Answers 模型开始,但我最终得到重复的数据并且不确定如何呈现。

模型.PY

class Question(models.Model):
    survey = models.ForeignKey(Survey, on_delete=models.CASCADE)
    question_sequence = models.IntegerField()
    question_to_ask = models.CharField(max_length=4000, unique=True)

    def __str__(self):
        return self.question_to_ask

class Answer(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    possibleAnswer = models.CharField(max_length=4000)
    possibleAnswer_image = models.ImageField(blank=True, null=True)

    def __str__(self):
        return self.possibleAnswer

VIEWS.PY

def survey(request):    
    q = [x for x in Question.objects.all().values()]
    questions_dict = {'questions': q}

    # a = [x for x in Answer.objects.select_related().all()] 
    # answers_dict = {'answers': a}

    return render(request, 'survey_app/survey.html', context=questions_dict)

.HTML

<body>
      <div class=questions>
        {% if questions %}

      <h1> {% for q in questions %}</h1>
        <p> {{ q.question_to_ask }}</p>

          <p> {% for a in answers %}</p>
          <p> {{ a.question.question_to_ask }}</p> 
            {% endfor %}

          {% endfor %}

        {% else %}
          <p> NO RECORDS SHOWN</p>
        {% endif %}
      </div>
</body>

我的目标是在 html 上显示:

Question_To_Ask (q1)

  • PossibleAnswer / possibleAnswer_image(用于 q1)
  • PossibleAnswer / possibleAnswer_image(用于 q1)

Question_To_Ask (q2)

  • PossibleAnswer / possibleAnswer_image(用于 q2)
  • PossibleAnswer / possibleAnswer_image(用于 q2)
  • PossibleAnswer / possibleAnswer_image(用于 q2)
  • PossibleAnswer / possibleAnswer_image(用于 q2)

等等……

【问题讨论】:

标签: python django django-models


【解决方案1】:

我认为 {% endfor %} 的问题

<body>
  <div class=questions>
    {% if questions %}

  <h1> {% for q in questions %}</h1>
    <p> {{ q.question_to_ask }}</p>
        {% endfor %}
      <p> {% for a in answers %}</p>
      <p> {{ a.question.question_to_ask }}</p> 
        {% endfor %}

    {% else %}
      <p> NO RECORDS SHOWN</p>
    {% endif %}
  </div>

【讨论】:

    【解决方案2】:

    这应该可行。

    your_question_object.answer = your_question_object.answer_set.all()
    

    这应该将您问题的所有可能答案添加到your_question_objectanswer 属性中作为您的问题的外键

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 1970-01-01
      • 2018-09-22
      • 2018-07-02
      相关资源
      最近更新 更多