如何解决django加载大量数据的问题?

问题描述 投票:0回答:1

我正在尝试为我的工作项目编写一个像 IMDb 这样的应用程序。在这个应用程序中,我需要在 MySQL 数据库中存储 8700 部 IMDB 电影以及大约 40k 名导演和演员,

当我尝试发布新电影时,电影创建页面需要很长时间(大约20秒)才能渲染。

首先,我制作了一个名为“persons”的模型,其中包含人物姓名、性别、“is_director”和“is_actor”布尔字段。

然后,我为 is_director 和 is_actor 人员创建了一个名为“movies”的模型,其中包含 2 个 ManyToManyFields。

之后,我使用 Django 夹具将大约 40k 人导入到我的数据库中。 我的问题从这里开始。当我尝试从 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 core 和 Laravel。和他们一起写这样的应用程序是不是更好?语言没问题,只要表演。

python django autocomplete frameworks large-data
1个回答
1
投票

我猜您的管理页面两次包含您的 4 万人列表。 尝试在管理员中为导演和演员字段使用raw_id_fields

请参阅 Django 文档这篇关于很长列表的文章(以 ForeignKey 为例,但它也应该与 ManyToManyField 一起使用)

© www.soinside.com 2019 - 2024. All rights reserved.