2015-07-01 52 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) 
     ) 

这不处理默认值,但现在就足够了。

相关问题