-1
我在django中有一個自定義用戶模型,其中user1報告給層次結構中的另一個用戶2。該用戶將向另一個用戶3報告等等,直到頂級用戶4不向任何人報告。因此,除非滿足這個條件,否則分配給最低層的所有任務應該分配給該用戶1,而分配給他的所有任務應該在用戶2上可用,等等。因此,user4應該能夠查看其下的用戶的所有任務狀態,即user1,2,3。直到用戶沒有向其他人報告時,該層次的深度纔是已知的。是否有一個迭代函數來確定最後一個user4級別,可以使用lambda或一些遞歸循環等以簡單的方式在python中編寫?示例代碼嘗試:python循環直到深度未知django
解析爲: 在模型管理員查詢集:
rep_users = []
reporting_custom_users = CustomUser.objects.filter(
report_to=request.user.customuser.pk)
if reporting_custom_users:
rep_users = get_all_users(self,request,reporting_custom_users)
else:
rep_users = [request.user]
qs = Task.objects.filter(Q(assigned_to__in=rep_users)|
Q(requestor__in=rep_users))
return qs
的遞歸函數,我試過:
sub_users = []
def get_all_users(self,request,reporting_custom_users):
rep_users = []
for n in reporting_custom_users:
sub_users.append(n)
while True:
get_all_users(self,request,CustomUser.objects.filter(
report_to=n))
if n.report_to is None:
rep_users.append(n)
break
rep_users += sub_users
rep_users.append(request.user.customuser)
reporting_users = []
for m in list(set(rep_users)):
reporting_users.append(User.objects.get(id=m.muser.pk))
return reporting_users
唯一的照顧將要採取的是,如果USER1向用戶2報告,同一用戶2不向用戶1報告。這可以在表單驗證中完成。
您是否嘗試過任何代碼?我們甚至不知道你的自定義用戶模型是什麼樣子的(它是否具有'hierarchy'屬性?),但是可能有很多方法來實現它。 – Evert