models.py
<form id="formulaireReservationSalle" name="formulaireReservationSalle" method="POST" data-role="validator">
<?php if (isset($data)) { ?>
<input type="hidden" id="identifiant" name="identifiant" value="<?php echo isset($data) ? $data[0]->identifiant : ''; ?>" />
<?php } ?>
<input type="hidden" id="salle_code" name="salle_code" value="<?php echo $salle_code; ?>" />
<div class="flex-grid padding10">
<div class="row"><div class="cell colspan12 margin10 header"><?php echo htmlentities($titre); ?></div></div>
<div class="row">
<div class="cell margin10">
<div class="input-control modern select required">
<select name="clt_id" id="clt_id" data-validate-func="required" data-validate-hint="Ce champ est obligatoire">
<option value=""> -- Sélectionner un client -- </option>
<?php
$t_tabl = new Client();
$clients = $t_tabl->lireParCritere([]);
foreach ($clients as $client) {
$selected = (isset($data) && $client->clt_id == $data[0]->clt_id ? "selected" : "");
?>
<option value="<?php echo $client->clt_id; ?>" <?php echo $selected; ?>><?php echo $client->noms; ?></option>
<?php
}
?>
</select>
</div>
</div>
</div>
<div class="row">
<div class="cell margin10">
<div class="input-control modern text required" data-role="input" id="date_deb">
<input type="text" name="date_debut" id="date_debut" data-validate-func="required" data-validate-hint="Ce champ est obligatoire" value="<?php echo isset($data) ? convertDateFormat3($data[0]->date_debut,'/') : ''; ?>" placeholder="Date début"/>
<span class="label">Date début</span>
<button class="button helper-button clear"><span class="mif-cross"></span></button>
</div>
</div>
<div class="cell margin10">
<div class="input-control modern text required" data-role="input">
<input type="text" name="heure_debut" id="heure_debut" value="<?php echo isset($data) ? $data[0]->hdeb : ''; ?>" placeholder="Heure début"/>
<span class="label">Heure début</span>
<button class="button helper-button clear"><span class="mif-cross"></span></button>
</div>
</div>
</div>
<div class="row">
<div class="cell margin10">
<div class="input-control modern text" data-role="input" id="date_fin">
<input type="text" name="date_fin" id="date_fin" data-validate-func="required" data-validate-hint="Ce champ est obligatoire" value="<?php echo isset($data) ? convertDateFormat3($data[0]->date_fin,'/') : ''; ?>" placeholder="Date fin"/>
<span class="label">Date fin</span>
<button class="button helper-button clear"><span class="mif-cross"></span></button>
</div>
</div>
<div class="cell margin10">
<div class="input-control modern text" data-role="input">
<input type="text" name="heure_fin" id="heure_fin" value="<?php echo isset($data) ? $data[0]->hfin : ''; ?>" placeholder="Heure fin"/>
<span class="label">Heure fin</span>
<button class="button helper-button clear"><span class="mif-cross"></span></button>
</div>
</div>
</div>
<div class="row">
<div class="cell margin10">
<div class="input-control modern textarea">
<textarea name="commentaire" id="commentaire" placeholder="Commentaire..."><?php echo isset($data) ? $data[0]->commentaire : ''; ?></textarea>
</div>
</div>
</div>
<div class="row input-control"></div>
<div class="row flex-just-sa">
<div class="cell margin10">
<div id="btn_ok" class="button default">Valider</div>
</div>
<div class="cell margin10">
<div id="btn_retour" class="button default">Annuler</div>
</div>
</div>
</div>
</form>
<script type="text/javascript">
$(document).ready(function() {
$("#date_deb").datepicker();
$("#heure_debut").datetimepicker({
datepicker:false,
format:'H:i',
step:5
});
$("#date_fin").datepicker();
$("#heure_fin").datetimepicker({
datepicker:false,
format:'H:i',
step:5
});
});
</script>
目标实现:
class CampaignType(models.Model):
name = models.CharField(max_length=100)
class Campaign(models.Model):
name = models.CharField(max_length=200, unique=True)
campaign_type = models.ForeignKey(CampaignType)
我如何实现上述&#39;嵌套&#39;在DJANGO模板? 我基本上想要根据类型对广告系列进行分类。 请帮忙。
答案 0 :(得分:1)
您应该只使用Django自动为您提供的反向关系访问器,而不是尝试手动过滤。
{{1}}
答案 1 :(得分:0)
最好使用select_related选择广告系列,以便单个查询也可以使用所有CampaignType。
使用模板中的重新组合模板标记显示按CampaignType分组的广告系列。
查看
adsorbowanie
adsorpcje
adular
adwena
adwent
adwentnio
adwentysta
adwentystka
adwersarz
adwokacjo
模板
campaigns = Campaign.objects.all().select_related ()
答案 2 :(得分:-1)
您可以通过在上下文变量中设置列表列表来实现这一点,其中列表的每个元素都是一个广告系列类型的所有广告系列的列表。
要设置此类变量以便在模板中使用,请在视图中使用get_context_data()
。
见这里。
- 假设您在变量campaign_types_list
中进行设置,并且想要以campaign_type -> campaign
格式呈现,那么在您的模板中,您将执行以下操作 -
{% for campaigns_in_campaign_type in campaign_type_list %}
{% for campaign in campaigns_in_campaign_type %}
{{ campaign.campaign_type}} -> {{ campaign }}
{% endfor %}
{% endfor %}
对于评论中给出的格式,您可以执行以下操作 -
{% for campaigns_in_campaign_type in campaign_type_list %}
{% for campaign in campaigns_in_campaign_type %}
{% if forloop.first %}
{{ campaign.campaign_type}}
{% endif %}
{{ campaign }}
{% endfor %}
{% endfor %}
另外,请浏览django template-docs
答案 3 :(得分:-1)
如果我没记错的话,在Django中,它通常不赞成允许在模板逻辑中执行大量逻辑,尤其是查询数据库的逻辑。
为了实现您想要实现的目标,我觉得最好在一个定义良好的python容器中收集结果,然后将容器传递给模板进行渲染。
此外,如果您尝试将category_type映射到所有类别,那么您的逻辑似乎有点糊涂。
尝试这样的事情:
collect = []
for camp_type in CampaignType.objects.all()
collect.append((camp_type, camp_type.campaign_set.all()))
然后尝试编写一个简单的嵌套for循环
{% for holder in collect %}
<h1> {{ holder.0 }} </h1>
{% for category in holder.1 %}
<p>{{ category }}</p>
{% endfor %}
{% endfor %}