【发布时间】:2015-11-16 11:44:07
【问题描述】:
我有三个模型:Zone、Stage 和具有 ManyToMany 关系的 ZoneStage。
背后的重点是我有多个区域,每个区域都有多个阶段。对于每个阶段的每个区域,我想显示一定的价值,这就是我创建 ZoneStage 模型的原因。
我不知道如何按照下面的图片显示值。我想我可以通过:
例如 对于区域中的 objectz: 对于舞台中的对象: 对于 zone_stage 中的 objectzs:
这里有一些条件
或
例如 尝试使用过滤器?
虽然,我需要一些指导和方向,阅读什么内容,如何做等,如果有任何反馈可以让我的生活更轻松地解决这个问题,我将不胜感激。
这是我得到的:
我的模特:
class Zone(models.Model):
ZONE_N = (
('Z2','Z2'),
('Z4','Z4'),
('Z6.1','Z6.1'),
('Z9LH','Z9LH'),
)
zone_name = models.CharField(max_length=5, choices=ZONE_N, primary_key=True)
zone_number = models.CharField(max_length=5,blank=True)
class Meta:
ordering = ('zone_name',)
def __unicode__(self):
return self.zone_name
class Stage(models.Model):
STAGE_N = (
('S1','S1'),
('S2','S2'),
('S3','S3'),
('S4','S4'),
)
stage_number = models.CharField(max_length=3, choices=STAGE_N, primary_key=True)
stage_name = models.CharField(max_length=50)
zones = models.ManyToManyField('Zone', through='ZoneStage', related_name='status')
class Meta:
ordering = ('stage_number',)
def __unicode__(self):
return self.stage_number
class ZoneStage(models.Model):
zone = models.ForeignKey(Zone)
stage = models.ForeignKey(Stage)
value = models.CharField(max_length=10)
class Meta:
ordering = ('zone',)
def __unicode__(self):
return '%s %s' % (self.zone, self.stage)
我的观点:
def index(request):
zs = ZoneStage.objects.all()
z = Zone.objects.all()
s = Stage.objects.all()
context = {'zone_stage': zs, 'zone': z, 'stage': s}
return render(request, 'index.html', context)
我的模板:
<table border="1">
<tr>
<td></td>
<td></td>
{% for object in zone %}
<td>{{ object.zone_name }}</td>
{% endfor %}
</tr>
{% for stages in stage %}
<tr>
<td>{{ stages.stage_number }}</td>
<td>{{ stages.stage_name }}</td>
{% for values in stages.zonestage_set.all|dictsort:"zone.zone_name" %}
<td>{{ values.value}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
【问题讨论】: