2012-11-02 289 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' 

在'阿卡斯'表中我有2225188記錄因此,更改視圖花費很長時間來加載此字段。有什麼解決方案來解決這個問題?我可以爲m2m小部件進行分頁嗎?我怎樣才能做M2M分頁Django

任何人都可以幫助解決這個問題嗎?在admin.py我使用filter_horizo​​ntal = [「從Akas」] Image showing Bellow for the Aka Table

回答

2

這是更好的使用比默認的小部件的自定義窗口小部件爲多到許多領域,甚至在這種情況下,外鍵的字段。由於您有大量的Akas實例,因此HTML頁面本身變得非常大,因此需要時間加載。

您可以使用分頁創建自己的自定義小部件。雖然我的建議是你使用自動完成的小部件。您可以查找現有的django軟件包here並使用適合您需求的軟件包。這裏的基本思想是使用ajax請求從服務器動態獲取數據,而不是一次加載所有內容。

+0

我以前用過這個,它很不錯; https://github.com/crucialfelix/django-ajax-selects –

+0

我如何定製m2m小部件?我想要默認的Django m2m小部件與分頁。 –

+0

您必須爲此編寫自定義小部件。 – Konstant