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_horizontal = ['Akas',]
最佳答案
在这种情况下,对于多对多字段甚至外键字段,使用自定义小部件比默认小部件要好得多。由于您有大量的 Akas
实例,HTML 页面本身变得非常大,因此需要时间来加载。
您可以自己创建带有分页的自定义小部件。尽管我的建议是您使用自动完成小部件。您可以查找现有的 django 包 here并使用适合您需要的那个。这里的基本思想是使用 ajax 请求从服务器动态获取数据,而不是一次加载所有内容。
关于python - 我如何为 M2M Django 做分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191594/