0
首先,我是一个Django的新手,并试图学习,所以请容忍我的长问题。将Django Queryset安排到一个奇特的DIV布局(模板)
我有我的应用程序的以下django数据模型。为了表明我已经编辑并删除了大部分模型。
class table1(models.Model):
user = models.CharField(max_length=25)
filename = models.CharField(max_length=40)
def __unicode__(self):
return u'%s' % (self.user)
class table2(models.Model):
accession = models.CharField(max_length=50, blank=True)
version = models.CharField(max_length=50, blank=False)
exp = models.ForeignKey(table1)
def __unicode__(self):
return u'%s, %s, %s' %(self.accession,self.version)
class table3(models.Model):
sf_id = models.CharField(max_length=50, blank=False)
name = models.CharField(max_length=60, blank=False)
mzml_fk = models.ForeignKey(table2)
def __unicode__(self):
return u'%s, %s' %(self.sf_id, self.name)
class table3_1(models.Model):
ref = models.CharField(max_length=50, blank=False)
value = models.CharField(max_length=100)
sf_fk= models.ForeignKey(table3)
def __unicode__(self):
return u'%s, %s' %(self.ref, self.value)
class table4(models.Model):
soft_id = models.CharField(max_length= 45)
version = models.CharField(max_length=50, blank=False)
soft_fk = models.ForeignKey(table2)
def __unicode__(self):
return u'%s, %s' %(self.soft_id, self.version)
class table4_1(models.Model):
cvRef = models.CharField(max_length=10, blank=False)
value = models.CharField(max_length=45, blank=True)
soft_cv_fk = models.ForeignKey(table4)
def __unicode__(self):
return u'%s, %s' %(self.cvRef, self.value)
class Selion(models.Model):
monoiso = models.FloatField()
state = models.CharField(max_length= 2)
sele_fk = models.ForeignKey(table2)
def __unicode__(self):
return u'%s, %s' % (self.monoiso,self.state)
class trum(models.Model):
spec_id = models.CharField(max_length= 60, blank=False)
spec_index = models.IntegerField(blank=False)
spec_fk = models.ForeignKey(Selion)
def __unicode__(self):
return u'%s, %s, %s, %s' % (self.spec_id,self.spec_index)
注意
- Selion是包含到现在更多的则记录100500最关键的模型。
- 我经过深的任何记录与Selion的查询(monoiso十进制场)
案例1
- 要显示Selion的所有记录我的做法似乎该死的缓慢。它需要主页加载更多的10秒。
----鉴于-----
allsel = Selion.objects.all()
-----在模板----
{{allsel|length}}
问题
- 什么是显示主应用程序模板中Selion记录总数的最有效方式è?
案例2
- 用户输入搜索浮点值并做数据库查询。
- 我会在Selion(monoiso字段)和加载结果模板中找到输入的值范围。
- 在结果模板上留下DIV容器我将展示在最低和最高范围Selion的所有匹配值(monoiso日)
---在View ----
myquery = Selion.objects.select_related().filter(monoiso__range=(lowrange, highrange))
---在模板----
<div id="leftcontainer">
{% for section in myquery %}
<ul>
<li><a href="#{{section.monoiso}}">{{section.monoiso}}</a></li>
</ul>
</div>
我成功到现在,但无法进一步发展。
情况3(上面的模板)
- 右DIV块是其中所有的数据模型字段是显示。
- 右DIV块是水平制表符,第一个制表符(Detail1)用于(table1,table2,table3,table4)和Detail2用于(trum)
- 我希望默认RQuery 1为活动状态并显示table1数据,滚动将显示table2,table3 & table4。
- 如果点击左侧的不同链接,内容会相应改变。
我不断试图做到这一点,但无法弄清楚将查询集链接到不同的选项卡和滚动导航。此外,当我必须过滤掉上面的查询集时,我遇到了性能问题。
请帮我想办法做到这一点!
@ Brandon- count()是完美的。我已经创建了布局(左和右DIV)。但是,在点击左侧链接之后,我在加载右侧DIV(标签)中的内容时遇到了问题。如果你有任何关于我的问题的教程,你能转发我吗?谢谢 – thchand
您是否想过通过Ajax调用让制表符从视图中加载内容? – Brandon
不,我没有想过这个,只是我正在生成上下文变量并在模板中使用它们。 – thchand