2015-07-01 38 views
0

我有一個模型,我只想鏈接到一個站點。我將使用文檔示例:如何使Django管理更改列表只顯示當前站點的實例

from django.db import models 
from django.contrib.sites.models import Site 

class Article(models.Model): 
    # ... 
    site = models.ForeignKey(Site) 

但是在每個站點的管理員中,無論站點設置如何,所有對象都顯示出來。我想:

  • 限制管理員的變更表數據集的實例,其中站點是當前站點
  • 自動設定與當前的站點設置新的形式(和可選隱藏)。

使事情複雜化,模型也是adminsortable.Sortable,但我不認爲這在這裏造成嚴重的問題。

回答

1

第一部分很簡單。我們可以在ModelAdmin上自定義查詢集(在此由StortableAdmin分類)。

from django.contrib.sites.shortcuts import get_current_site 

@admin.register(Article) 
class ArticleAdmin(SortableAdmin): 
    def queryset(self, request): 
     return super(ArticleAdmin, self).queryset(request).filter(
      site=get_current_site(request) 
     ) 

這不處理默認值,但現在就足夠了。

相關問題