2012-11-02 6 views
4
class Movie(models.Model): 
    title= models.CharField(max_length=100,) 
    votes=models.IntegerField(null=True) 
    year=models.IntegerField(null=True) 
    aspect_ration=models.CharField(max_length=50,) 
    mpaa=models.CharField(max_length=200,) 
    rating =models.CharField(max_length=20,) 
    imdbid=models.CharField(max_length=50,) 
    top_250_rank=models.IntegerField(null=True) 
    cover_url=models.CharField(max_length=500,) 
    plot_outline=models.TextField(blank=True, null=True) 
    summary= models.TextField(blank=True, null=True) 
    pub_date = models.DateTimeField(null=True, blank=True,default=datetime.today()) 
    akas_id = models.ManyToManyField('Akas', verbose_name=u'Akas ID',related_name="Akas_M2M_Movie") 


class Akas(models.Model): 
    name=models.CharField(max_length=500,) 
    def __unicode__(self): 
     return u'%s' % (self.name) 
    class Meta: 
     verbose_name = 'Other Movie Title' 
     verbose_name_plural = 'Other Movie Titles' 
    db_table = 'Akas' 

Dans la table 'Akas' j'ai 2225188 enregistrement Donc la vue Changer prend beaucoup de temps pour charger ce champ. Quelle est la solution pour résoudre ce problème? Puis-je faire pagination pour le widget m2m?Comment puis-je faire la pagination pour M2M Django

Quelqu'un peut-il aider à résoudre ce problème? En admin.py j'utilise filter_horizontal = [ « Akas »,] Image showing Bellow for the Aka Table

Répondre

2

Il est préférable d'utiliser un widget personnalisé que le widget par défaut pour un grand nombre à plusieurs domaines ou même les champs clés étrangers dans ce cas. Puisque vous avez un grand nombre d'instances Akas, la page HTML elle-même devient très volumineuse et prend donc du temps à charger.

Vous pouvez créer un widget personnalisé par vous-même, avec pagination. Bien que ma suggestion est que vous utilisez un widget auto-complète. Vous pouvez rechercher les paquets django existants here et utiliser celui qui correspond à vos besoins. L'idée de base ici serait d'utiliser des requêtes ajax pour obtenir dynamiquement des données du serveur au lieu de tout charger en même temps.

+0

J'ai utilisé celui-ci avant et c'est plutôt bon; https://github.com/crucialfelix/django-ajax-selects –

+0

Comment puis-je personnaliser le widget m2m ?? Je veux par défaut widget Django m2m avec pagination. –

+0

Vous devrez écrire votre widget personnalisé pour cela. – Konstant

Questions connexes