我为我的英语道歉。 我是Django的新面孔,做我的第一个应用程序,同时学习。 路上有一些泵,但到目前为止,这是一个令人愉快的旅程。
我正在做的应用程序将是一份调查问卷。 我们的想法是,您可以在管理面板下添加新问题,然后在网站上访问者可以回答问题以便反馈。
我想从头开始学习它。
我制作了一个由两部分组成的模型:问号和问题本身。 我想知道如何防止在模板中两次创建相同的问号标签。具有相同标签名称的所有问题应显示在一个问号标签下,而不是自身重复。
我会表明我的意思: 首先是代码:
class QuestionTag (models.Model):
tag_name = models.CharField(max_length=55)
tag_description = models.CharField(max_length=200, blank=True)
def __unicode__(self):
return u'%s %s' % (self.tag_name, self.tag_description)
class Question (models.Model):
QUEST_GROUP_NAME = (
(1, 'Group1'),
(2, 'Group2'),
)
question_group = models.IntegerField(max_length=3, choices=QUEST_GROUP_NAME, blank=False, default=1)
question_tag = models.ForeignKey('QuestionTag')
question_box = models.TextField()
class Meta:
ordering = ['-question_tag']
class QuestionView(ListView, FormView):
def get(self, request, person_id=1):
if not person_id:
return render(request, '404.html')
try:
personbyid = Person.objects.get(pk=person_id)
questions = Question.objects.filter(question_group=1).order_by('question_tag')
except Person.DoesNotExist:
return render(request, '404.html')
return render_to_response('questions.html',
{'personbyid ': inetrviewerid ,'Question_group1': questions })
<form id='formID' action='' method='post' autocomplete="off">{% csrf_token %}
{% for question in Question_group1 %}
<div class='question_header'>
<p class='question_tag'>.{{question.question_tag.tag_name}}</p>
<p class='question_tag_descript'>({{question.question_tag.tag_description}})</p>
</div>
<label class="question_quest">{{question.question_box}}</label>
<textarea name="answer" placeholder="Some text about the question!" rows="3"></textarea>
{% endfor %}
</form>
-question标签(描述)
---问题一?
--- textarea的
-question标签(描述)
---问题二?
--- textarea的
-question标签(描述)
---问题一?
--- textarea的
---问题二?
--- textarea的
谢谢!
答案 0 :(得分:0)
您可以使用ifchanged
模板标记:
{% for question in Question_group1 %}
{% ifchanged question.question_tag %}
<div class='question_header'>
<p class='question_tag'>.{{question.question_tag.tag_name}}</p>
<p class='question_tag_descript'>({{question.question_tag.tag_description}})</p>
</div>
{% endifchanged %}
<label class="question_quest">{{question.question_box}}</label>
<textarea name="answer" placeholder="Some text about the question!" rows="3"></textarea>
{% endfor %}
现在只有在question_tag发生变化时才会输出ifchanged块的内容。