如何解决在 Django 中加载大量数据的问题?
how to solve problem with loading large amount of data in django?
我正在尝试为我的工作项目编写类似 imdb 的应用程序。在这个应用程序中,我需要在 mysql 数据库中存储 8700 部 imdb 电影以及大约 40k 导演和 actors/actresses,
当我尝试 post 一部新电影时,电影制作页面需要很长时间(大约 20 秒)才能呈现。
首先,我做了一个名为 "persons" 的模型,其中包含人名、性别、"is_director" 和 "is_actor" 布尔字段。
然后,我确实为 is_director 和 is_actor 人创建了一个名为 "movies" 的模型,其中包含 2 个 ManyToManyFields。
在那之后,我确实使用 django fixture 将大约 4 万人导入了我的数据库。
我的问题从这里开始。当我尝试 post 来自 django admin 的新电影时,电影创建页面需要很长时间(大约 10 秒)才能呈现。
我知道这是针对大量人员数据的。我确实使用了 django 内置的自动完成功能,但问题仍然存在。
我是 Python/Django 的新手。所以我认为我做错了。
可能是我的数据库结构不对或者是我的模型有问题,不知道怎么解决!
# Person Model:
class Person(models.Model):
name = models.CharField(_('Person Name'), max_length=100)
is_actor = models.BooleanField(_('is actor'), default=True)
is_director = models.BooleanField(_('is director'), default=False)
MALE = 'male'
FEMALE = 'female'
PERSON_GENDER = [(MALE, _('Male')), (FEMALE, _('Female'))]
gender = models.CharField(
_('Gender'),
max_length=6,
choices=PERSON_GENDER,
default=MALE
)
# Movies Model:
class Movies(models.Model):
title = models.CharField(_('Movie Name'), max_length=250)
genre = models.ManyToManyField(Genre, verbose_name=_('genre'))
director = models.ManyToManyField(
Person, verbose_name=_('director'), related_name=_('director'),limit_choices_to={'is_director': True},blank=True)
actors = models.ManyToManyField(
Person, verbose_name=_('actors'), related_name=_('actors'),limit_choices_to={'is_actor': True},blank=True)
1- 我的代码有问题吗?
2- 我是不是做错了?
3-我是不是选错了框架?
4- 我熟悉 asp.net 核心和 laravel。跟他们一起写这种app是不是更好?语言没问题,我只需要表演
我想您的管理页面两次包含您的 4 万人列表。
尝试在管理员和演员字段中使用 raw_id_fields。
请看Django documentation
和 this article about very long list(以 ForeignKey 为例,但它也应该与 ManyToManyField 一起使用)
我正在尝试为我的工作项目编写类似 imdb 的应用程序。在这个应用程序中,我需要在 mysql 数据库中存储 8700 部 imdb 电影以及大约 40k 导演和 actors/actresses,
当我尝试 post 一部新电影时,电影制作页面需要很长时间(大约 20 秒)才能呈现。
首先,我做了一个名为 "persons" 的模型,其中包含人名、性别、"is_director" 和 "is_actor" 布尔字段。
然后,我确实为 is_director 和 is_actor 人创建了一个名为 "movies" 的模型,其中包含 2 个 ManyToManyFields。
在那之后,我确实使用 django fixture 将大约 4 万人导入了我的数据库。 我的问题从这里开始。当我尝试 post 来自 django admin 的新电影时,电影创建页面需要很长时间(大约 10 秒)才能呈现。 我知道这是针对大量人员数据的。我确实使用了 django 内置的自动完成功能,但问题仍然存在。
我是 Python/Django 的新手。所以我认为我做错了。 可能是我的数据库结构不对或者是我的模型有问题,不知道怎么解决!
# Person Model:
class Person(models.Model):
name = models.CharField(_('Person Name'), max_length=100)
is_actor = models.BooleanField(_('is actor'), default=True)
is_director = models.BooleanField(_('is director'), default=False)
MALE = 'male'
FEMALE = 'female'
PERSON_GENDER = [(MALE, _('Male')), (FEMALE, _('Female'))]
gender = models.CharField(
_('Gender'),
max_length=6,
choices=PERSON_GENDER,
default=MALE
)
# Movies Model:
class Movies(models.Model):
title = models.CharField(_('Movie Name'), max_length=250)
genre = models.ManyToManyField(Genre, verbose_name=_('genre'))
director = models.ManyToManyField(
Person, verbose_name=_('director'), related_name=_('director'),limit_choices_to={'is_director': True},blank=True)
actors = models.ManyToManyField(
Person, verbose_name=_('actors'), related_name=_('actors'),limit_choices_to={'is_actor': True},blank=True)
1- 我的代码有问题吗?
2- 我是不是做错了?
3-我是不是选错了框架?
4- 我熟悉 asp.net 核心和 laravel。跟他们一起写这种app是不是更好?语言没问题,我只需要表演
我想您的管理页面两次包含您的 4 万人列表。 尝试在管理员和演员字段中使用 raw_id_fields。
请看Django documentation 和 this article about very long list(以 ForeignKey 为例,但它也应该与 ManyToManyField 一起使用)