0

我有一个模型,我只想链接到一个站点。我将使用文档示例:

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

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

但是在每个站点的管理员中,所有对象都会显示,无论它们的站点设置如何。我想要:

  • 将管理员更改列表数据集限制为站点为当前站点的实例
  • 使用当前站点集自动设置新表单(并可选择隐藏它)。

使事情复杂化的是,该模型也是一个adminsortable.Sortable,但我不认为这会导致严重的问题。

4

1 回答 1

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)
        )

这不处理默认值,但现在对我来说已经足够了。

于 2015-07-01T13:49:47.677 回答