0

1 つのサイトにのみリンクしたいモデルがあります。ドキュメントの例を使用します。

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 に答える