Приложение Django работает медленно из-за множества внешних ключей

У меня проблемы с отображением и моделированием в django с несколькими внешними ключами.

При отображении или создании требуется много времени, так как у меня много данных.

Например, при попытке создания с помощью CreateView это занимает много времени, или при попытке отобразить сохраненные данные.

Есть ли способ оптимизировать создание и во время показа?

Модели с множественным ключом предварения и ManyToManyField следующие:

class Player(models.Model):
    name = models.CharField("Nombre", max_length=100, blank=True, null=True)
    player = models.ForeignKey(Socio, on_delete=models.CASCADE, related_name="player_socio")
    division = models.ForeignKey(Division, on_delete=models.CASCADE,related_name="player_division", blank=True, null=True)
    goals = models.IntegerField("Goles", default=0)
    league = models.ForeignKey("League", on_delete=models.CASCADE, related_name="player_league")
class Team(models.Model):
    team = models.CharField("Equipo", max_length=50, blank=True, null=True)
    league = models.ForeignKey("League", on_delete=models.CASCADE, related_name="team_league", blank=True, null=True)
    players = models.ManyToManyField(Player, blank=True, related_name="player_team")
class Match(models.Model):
    league = models.ForeignKey(League, on_delete=models.CASCADE, 
    related_name="match_league")
    date = models.DateField("Fecha", default=timezone.now)
    week = models.IntegerField("Semana", default=0)
    team_1 = models.ForeignKey(Team, on_delete=models.CASCADE, related_name="team_1_goal")
    team_2 = models.ForeignKey(Team, on_delete=models.CASCADE, related_name="team_2_goal")
class Goal(models.Model):
    goal = models.IntegerField("Goles", default=0)
    match = models.ForeignKey(Match, on_delete=models.CASCADE, null=True, blank=True, 
    related_name="match_goals")
    player = models.ForeignKey(Player, on_delete=models.CASCADE, null=True, blank=True, 
    related_name="player_goal")
    league = models.ForeignKey("League", on_delete=models.CASCADE, 
    related_name="player_league_goal")
<

Я попытался отобразить данные с помощью select2, но это все равно медленно.

Заранее благодарю

используйте prefetch_related и select_related queryset для повышения производительности

https://www.geeksforgeeks.org/prefetch_related-and-select_related-functions-in-django/

Вернуться на верх