簡體   English   中英

過濾中間模型並使用它來修改模型的查詢集

[英]Filter an intermediate model and use it to modify queryset of a model

我想我的問題可以用一個例子來最好地解釋。

class A:  # the model where I am making a ModelAdmin
    # 1-to-1 relationship with class B

class B:
    # some fields

class C:
    # many to many with class B
    # field - foreignKey from class D

class D:
    # 1 to 1 relationship with class User

class User:

在我的A類的modelAdmin中,我定義了get_queryset:

def get_queryset(self, request):
    qs = super().get_queryset(request)
    if request.user.is_superuser:
        return qs
    ??return qs.filter(class_C_field=request.user.class_D.pk)

哪里?? 意味着我想要做的是從B和C生成的中間表中獲取所有記錄,並僅獲取那些其類C中的字段等於類D中的實例之一的記錄。之后,我想使用C類和B類顯示在我的list_display中以顯示模型A類

    def get_queryset(self, request):
    qs = super().get_queryset(request)
    if request.user.is_superuser:
        return qs
    qs = A.objects.filter(Afield__C__Cfield=request.user.D.pk)
    return qs

原來我可以從A類進行查詢。因此,如果用戶不是管理員,則qs在D的外鍵下從A返回屬於C的所有記錄的列表。由於A具有一個A,因此不需要B與B一對一

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM