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