2016-01-27 111 views
3

我有以下模式設置:Django管理限制模型外鍵

的問題是,當我嘗試拉了對象的管理頁面,computer_names指向不相關的幾十萬行並且該頁面從不加載。如何將計算機名稱篩選到僅用於ManyToMany字段的用戶選定對象?

class ScoringException(models.Model): 
    class Meta: 
     ordering = ['date_modified'] 
    requester = models.CharField('Requester',max_length=50,null=False,blank=False) 
    computer_names = models.ManyToManyField(Computer) 
    domain = models.ForeignKey(Domain) 
    exception_kpi_types = models.ManyToManyField(ScoringType) 
    expiration_date = models.DateField('Expiration Date') 
    reason = models.CharField('Reason',max_length=1000,null=False,blank=False) 
    approved = models.BooleanField('Approved') 
    date_modified = models.DateTimeField('Date Updated',auto_now=True) 
+0

你可以嘗試另一個小工具'filter_horizo​​ntal',看看小工具是否會讓它更好一點? https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.filter_horizo​​ntal –

回答

0

您可以在管理使用raw_id_fields讓Django不渲染十萬行數據:

@admin.register(ScoringException) 
class ScoringExceptionAdmin(admin.ModelAdmin): 
    .... 
    raw_id_fields = ['computer_names'] 

隨着raw_id_fields,Django會顯示IDS的選定M2M對象名單。還添加了一個搜索按鈕,可以更輕鬆地爲m2m關係添加新對象。

查看documentation瞭解更多信息。

+0

這非常酷。無論如何顯示實際的文字而不是ID?用戶很難通過查看ID列表來查看發生了什麼 – Super1337

+0

不幸的是,沒有爲Django內置,請參見[this question](http://stackoverflow.com/questions/15190228/raw-id-領域知識對錶演-A-名稱,而不是-ID的 - )。答案還包含指向代碼片段的鏈接,用於呈現raw_id_fields的其他信息。 –