概述:做了一个三级关系模型,避免数据过度冗余,在最后得关系采用了manytomany 。假设游戏ABC,下面对应模块有abcde等,A有(abcd模块)B有(bce模块),假设a模块下有a1,a2,a3,a4...等数据,同理bcde。 table1:games(id--name) : 1-A,2-B,3-C ... table2: mokua(id--game_id--name)i:1-1-a, 2-1-b, 3-1-c, 4-1-d, 5-2-b, 6-2-c, 7-2-e table3: testdata(id--testdata) : 1-000, 2-001,3-002, 4-003, 5-004,6-005 .... 由于manytomany会额外产生一个表models_mokuai_testdata(id--testdata_id--mokuai_id):1-1-1, 2-1-2等
class game(models.Model):
name = models.CharField(max_length=100, verbose_name=u'游戏名称')
class mokuai(models.Model):
games = models.ForeignKey(game)
name = models.CharField(max_length=100, verbose_name=u'模功能块')
class testdata(models.Model):
mokuais = models.ManyToManyField(mokuai)
name = models.CharField(max_length=300, verbose_name=u'测试内容')
def get_mokuais(self):
return ",".join([unicode(base) for base in self.mokuais.all()])
现假设game取A 得情况下,在前端显示出所有A得信息,游戏A--模块a--000 001 模块b- xxx ,xxx
view 里返回了 games.objects.all(), mokuai.objects.all(), testdata.objects.all()
{% for game in games %}
{% for mokuai in mokuais %}
{% testdata = testdata.objects.filter(mokuai.id) %}
# 这里因为每个模块得id在循环里是变化得,所以要在manytomany得表里查找,
#上面的写法是想法
{% for foo in testdata %}
{{ foo.name }}
{% endfor %}
{% endfor %}
{% endfor %}