【发布时间】:2021-01-16 13:46:10
【问题描述】:
我正在开发一个需要访问一个非常大的 (MySQL) 数据库的 Django 应用程序,该数据库没有任何外键。我需要对多个表进行查询。我这样做的方式非常低效,并且涉及到多个循环:
{% for flower in especies_id %}
<td>{{flower.especies}}</td>
{% for family in family_id %}
{% if family.family_id == flower.family_id %}
<td><a class="nav-item active" href="/home">
{{family.family_name}}</td></a>
{% endif %}
{% endfor %}
{% endfor %}
有没有办法用 Django shell 或者 JavaScript 来处理这个数据库?还是完全重构数据库?
(编辑): 数据库有〜3000个条目 两个表之间的关系是使用一个附加的: flower2estate,其中包含 Estate_id、flower_id
模型.py:
class Listflower(models.Model):
especies_id = models.AutoField(primary_key=True)
family_id = models.IntegerField(blank=True, null=True)
especies = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'listflower'
class Estate(models.Model):
estate_id = models.AutoField(primary_key=True)
estate_name = models.CharField(max_length=100, blank=True, null=True)
class Meta:
managed = False
db_table = 'estates'
class Flower2Estate(models.Model):
estate_id = models.IntegerField(primary_key=True)
especies_id = models.IntegerField()
class Meta:
managed = False
db_table = 'flower2estate'
unique_together = (('estado_id', 'especie_id'),)
Views.py:
def flowers(request):
list_flower = ListFlower.objects.all().order_by('especies_id')
paginator = Paginator(list_flower, 3)
page = request.GET.get("page")
try:
flowers = paginator.page(page)
except PageNotAnInteger:
flowers = paginator.page(1)
except EmptyPage:
flowers= paginator.page(paginator.num_pages)
return render(request, 'accounts/flowers.html', {'page':page,"flowers"
:flowers,"especies_id":flowers})
我需要获取“花”和相应的“庄园”,而无需在 3000 个条目之间循环。
【问题讨论】:
-
请展示你的模型和你的观点。你循环的列表有多大?
-
当然,也许,取决于!我们需要更多地了解您正在使用的内容才能说出来。 Django通常可以处理,但可能并不容易。
-
添加了包含信息的编辑,谢谢
标签: python mysql django database web