[英]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.