2017-01-29 104 views
1

我試圖限制選項到特定用戶的管理應用程序中的外鍵(我試圖限制的字段被稱爲學校) 。這就是我的代碼的樣子 - 不幸的是,當我試圖編輯學生(通過點擊他們的名字)時,存在兩個問題(下文提到)。學校限制ModelAdmin中的外鍵選項返回「選擇一個有效的選擇」

1.默認值是 -

2,當我從下拉菜單中選擇合適的學校,並試圖挽救我得到校場的錯誤說

選擇有效的選擇。該選擇不是可用的 選項之一。

這是什麼樣子

enter image description here

class modelStudentAdmin(admin.ModelAdmin): 

    def get_queryset(self, request): 
     qs = super(modelStudentAdmin, self).get_queryset(request) 

     if request.user.is_superuser: 
      return qs 
     else: 
      schoolInstance = modelSchool.objects.get(user=request.user) 
      qs = modelStudent.objects.filter(school=schoolInstance) 
      return qs 

    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if request.user.is_superuser: 
      return super(modelStudentAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 

     #Not superuser only staff 
     if db_field.name == 'school': 
      t = modelSchool.objects.filter(user=request.user).values_list("school_name",flat=True) 
      kwargs['queryset'] = t 

     return super(modelStudentAdmin,self).formfield_for_foreignkey(db_field, request, **kwargs) 

現在,如果我刪除的方法

def formfield_for_foreignkey(self, db_field, request, **kwargs): 

一切正常,但我就不能限制外鍵。有關我可能會做錯什麼的建議?

回答

1

嘗試用這種

modelSchool.objects.filter(user=request.user) 
你不需要VALUE_LIST查詢集

更換

t = modelSchool.objects.filter(user=request.user).values_list("school_name",flat=True) 

+0

工作感謝 –

相關問題