python - 我如何为 M2M Django 做分页

标签 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 条记录,因此 Change View 需要很长时间才能加载此字段。解决此问题的解决方案是什么?我可以为 m2m 小部件进行分页吗?

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

最佳答案

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

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

关于python - 我如何为 M2M Django 做分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191594/

相关文章:

python - skippin 'cutilFunctions.c' Cython 扩展(最新)

Python 类作为对象

python - 在 zc.buildout 中配置开发 Egg

python - 对象没有属性_set',Django

django - 亚马逊 S3 + docker - "403 Forbidden: The difference between the request time and the current time is too large"

django - Django Admin ManyToManyField

python - 如何在 django admin TabularInline 中隐藏删除项目

python - virtualenv 中的 django 出现 apache mod_wsgi 错误

Django 管理错误 ValidationError : [u'ManagementForm data is missing or has been tampered with']

python - listOfArticles() 只接受 1 个参数(给定 2 个参数)