Django rest framework 如何使用客户端处理延迟加载数据表?
我有一个包含3500个条目和外键的表 我正在使用客户端处理数据表:django rest框架和Ajax 加载最多需要10秒 有没有一种方法可以显示前10个条目(第一页结果)——让用户不会认为我的网站坏了,因为它花了太长时间——而其余条目则在后台加载 同时也在寻找负载速度的优化。 谢谢你抽出时间 编辑: models.pyDjango rest framework 如何使用客户端处理延迟加载数据表?,django-rest-framework,datatables,Django Rest Framework,Datatables,我有一个包含3500个条目和外键的表 我正在使用客户端处理数据表:django rest框架和Ajax 加载最多需要10秒 有没有一种方法可以显示前10个条目(第一页结果)——让用户不会认为我的网站坏了,因为它花了太长时间——而其余条目则在后台加载 同时也在寻找负载速度的优化。 谢谢你抽出时间 编辑: models.py class Bibrest51(models.Model): cadastro_id = models.AutoField(primary_key=True)
class Bibrest51(models.Model):
cadastro_id = models.AutoField(primary_key=True)
autor = models.CharField(db_column='Autor', max_length=255, blank=True, null=True)
tema = models.ForeignKey('BibTema', models.DO_NOTHING, blank=True, null=True)
tipo = models.ForeignKey('Tipo', models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = False
db_table = 'bibrest51'
@property
def bib_tipo_nome(self):
return self.tipo.tipo_nome
class BibTema(models.Model):
tema_id = models.AutoField(primary_key=True)
tema_nome = models.CharField(max_length=150, blank=True, null=True)
class Meta:
managed = False
db_table = 'tema'
def __str__(self):
return self.tema_nome
序列化程序.py
class TemaSerializer(serializers.ModelSerializer):
class Meta:
model = BibTema
fields = '__all__'
depth = 1
class TipoSerializer(serializers.ModelSerializer):
class Meta:
model = Tipo
fields = '__all__'
depth= 1
class BibSerializer(serializers.ModelSerializer):
temas = TemaSerializer(read_only=True)
tipos = TipoSerializer(read_only=True)
class Meta:
model = Bibrest51
fields = (
'autor', 'ano', 'titulo', 'referencia','tipos','temas'
)
对于优化,您可以使用:
- 使用及
class TemaSerializer(serializers.ModelSerializer):
class Meta:
model = BibTema
fields = '__all__'
# depth= 1 # delete string
class TipoSerializer(serializers.ModelSerializer):
class Meta:
model = Tipo
fields = '__all__'
# depth= 1 # delete string
class BibSerializer(serializers.ModelSerializer):
temas = TemaSerializer(read_only=True, sourse='tema')
tipos = TipoSerializer(read_only=True, sourse='tipo')
class Meta:
model = Bibrest51
# There are fewer fields in the code you provided,
# so I rely on you for this.
fields = (
'autor', 'ano', 'titulo', 'referencia','tipos','temas'
)
使用页面大小为10行的,您可能会(也可能不会)看到一些改进(例如)。否则,可能需要使用。我从未使用过它,但该插件可能也值得一看。@andrewjames我尝试了bdeferrender选项,但速度没有变化,我将查看插件,谢谢我与我的客户交谈,Scroller不是选项嗨,谢谢你的回答,你能给出我需要使用的js代码的指针吗:请求前10条记录,然后在后台加载其余的记录?我不明白你怎么看结果。为什么不实现常规分页或滚动分页?我使用分页(10项),但数据仍然是预先加载的,根据我的客户端,滚动不是一个选项。我尝试使用嵌套序列化,但没有成功。您没有指定如何查看结果。试着读一下老师的答案。以及嵌套序列化的失败之处。你能提供模型和序列化程序的代码吗?