Django adminでインラインモデルのクエリセットを制限する方法 質問する

Django adminでインラインモデルのクエリセットを制限する方法 質問する

2つのモデルを実装しました

class A(models.Model):
    a_name = models.CharField(max_length=50)

class B(models.Model):
    a = models.ForeignKey(A)
    b_tag = models.CharField(max_length=50)
    user=models.ForeignKey(User)             # stores username

ここで、管理者を定義しABのサブクラスとして に登録しますTabularInline。インライン フォームセットがレンダリングされる前に、オブジェクトのリストを何らかの方法でフィルタリングして、に関連するすべてのオブジェクトがフォームセットに入るのではなく、現在ログインしているユーザーに一致するパラメータを持つオブジェクトだけが表示されるようにするBことはできないでしょうか。BAuser

ベストアンサー1

次の方法を使用しますget_querysethttps://docs.djangoproject.com/en/stable/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset

次のようになります:

class BAdmin(admin.TabularInline):
    ...

    def get_queryset(self, request):
        qs = super(BAdmin, self).get_queryset(request)
        return qs.filter(user=request.user)

おすすめ記事