将Django Queryset安排成一个奇特的DIV布局(模板)
首先,我是Django的新手,正在努力学习,所以请容忍我的长问题 我的应用程序有以下django数据模型。为了清楚起见,我已经编辑并删除了大部分模型将Django Queryset安排成一个奇特的DIV布局(模板),django,templates,html,django-queryset,Django,Templates,Html,Django Queryset,首先,我是Django的新手,正在努力学习,所以请容忍我的长问题 我的应用程序有以下django数据模型。为了清楚起见,我已经编辑并删除了大部分模型 class table1(models.Model): user = models.CharField(max_length=25) filename = models.CharField(max_length=40) def __unicode__(self): return u'%s' % (self
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十进制字段)遍历所有记录的深度
- 为了显示赛利昂的所有记录,我的方法似乎太慢了。主页加载时间超过10秒李>
- 在主应用程序模板中显示选择记录总数的最有效方式是什么李>
- 用户在数据库的搜索和查询中输入浮点值李>
- 我将在Selion(monoiso字段)和加载结果模板中找到输入的值范围
- 在左DIV容器上的结果模板中,我将显示最低和最高选择范围内的所有匹配值(monoiso字段)
{myquery%中节的%s}
我一直成功到现在,但不能再前进了
案例3(模板上方)
- 右DIV块显示所有数据模型字段
- 右DIV块是水平选项卡,第一个选项卡(Detail1)用于(表1、表2、表3、表4),Detail2用于(trum)
- 我希望默认情况下RQuery 1处于活动状态并显示table1数据,滚动将显示table2、table3和table4
- 如果单击左侧的不同链接,则内容应相应更改
请帮我想办法 您不需要对所有“Selion”对象进行水合处理来获得queryset的长度。而是使用Selion.objects.count(),它将返回标量值,而不是100k+个对象
对于选项卡,请查看jQueryUI以获得一个简单的选项卡实现,其中包含一些Ajax回调,以在每个选项卡中显示适当的数据。@Brandon-count()非常完美。我已经创建了布局(左和右DIV)。但是,在点击左边的链接后,我在右分区(选项卡)中加载内容时遇到了问题。如果你有任何关于我的问题的教程,你能转发给我吗?谢谢你想过让选项卡通过Ajax调用从视图加载内容吗?不,我没想过,我只是在生成上下文变量并在模板中使用它们。你可以这样做。这取决于什么适合你的应用。
allsel = Selion.objects.all()
{{allsel|length}}
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>