Прежде всего, я новичок в 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.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
- Чтобы показать все записи Селиона, мой подход кажется чертовски медленным.Загрузка главной страницы занимает более 10 секунд.
---- в поле зрения -----
allsel = Selion.objects.all()
----- в шаблоне ----
{{allsel|length}}
Вопрос
- Какой самый эффективный способ показать общее количество записей Selion в основном шаблоне приложения?
Случай 2
- Пользователь вводит плавающее значение в поиск и выполняет запрос к базе данных.
- Я найду диапазон введенных значений в Selion (поле monoiso) и загрузлю шаблон результатов.
- В шаблоне результатов в левом контейнере DIV я покажу все совпадающие значения в нижнем и верхнем диапазонеСелиона (подано в моноизо)
--- в поле зрения ----
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>
![enter image description here](https://i.stack.imgur.com/DJZZ9.jpg)
Я преуспел до сих пор, но не смог продвинуться дальше.
Случай 3 (приведенный выше шаблон)
- Right DIVВ этом блоке отображаются все поля моделей данных.
- Правый блок DIV - горизонтальная вкладка, первая вкладка (Detail1) предназначена для (table1, table2, table3, table4) и Detail2 для (trum)
- Я хочу, чтобы по умолчанию RQuery 1 был активным и отображал данные таблицы1, при прокрутке будут отображаться таблица2, таблица3 и таблица4.
- Если щелкнуть по разным ссылкам слева, содержимое должно измениться соответственно.
Я постоянно пытаюсь это сделать, но не могу понять, как связать набор запросов в другую вкладку и прокрутитьнавигация.Более того, у меня возникают проблемы с производительностью, когда мне приходится отфильтровывать мой вышеуказанный набор запросов.
Пожалуйста, помогите мне разобраться, как это сделать!