我如何为M2M Django做分页

时间:2012-11-02 08:19:53

标签: python django django-admin

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'

在'Akas'表中我有2225188记录所以更改视图需要很长时间才能加载此字段。解决此问题的解决方案是什么?我可以为m2m小部件做分页吗?

任何人都可以帮助解决这个问题吗?在admin.py我使用filter_horizo​​ntal = ['Akas',] Image showing Bellow for the Aka Table

1 个答案:

答案 0 :(得分:2)

在这种情况下,使用自定义窗口小部件比使用多对多字段或甚至外键字段的默认窗口小部件要好得多。由于您有大量Akas个实例,因此HTML页面本身变得非常大,因此需要时间来加载。

您可以使用分页自行创建自定义小部件。虽然我的建议是你使用自动完成小部件。您可以查找现有的django包here并使用适合您需求的包。{3}}。这里的基本思想是使用ajax请求从服务器动态获取数据,而不是一次加载所有内容。