閱讀HOD在M_ClassAdmin的唯一分支機構先HOD和分公司之間的關係,對於這一點,做出改變在Model.py作爲
from django.contrib.auth.models import User
添加霍德字段作爲
HOD = models.ForeignKey(User)
存儲HOD和分公司的關係
現在Model.py將非常具有...
admin.py覆蓋get_queryset
class M_Branch(models.Model):
HOD = models.ForeignKey(User)
Branch_ID = models.CharField(max_length=20)
Branch_Name= models.CharField(max_length=50)
def __str__(self):
return self.Branch_Name
class M_Academic_year(models.Model):
Academic_year = models.CharField(max_length=20)
def __str__(self):
return self.Academic_year
class M_Class(models.Model):
Branch_ID = models.ForeignKey(M_Branch)
Academic_Year = models.ForeignKey(M_Academic_year)
Class_ID = models.CharField(max_length=20)
Class_Name = models.CharField(max_length=20)
def __str__(self):
return self.Class_Name
然後和formfield_for_foreignkey
class M_ClassAdmin(admin.ModelAdmin):
def get_queryset(self, request):
print("Query SET")
qs = super(M_ClassAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
user = User.objects.get(username=request.user.username)
branch = M_Branch.objects.get(HOD = user)
print("Branch_ID_id",branch)
return qs.filter(Branch_ID_id=branch)
def formfield_for_foreignkey(self, db_field, request, **kwargs):
print("I am in func::")
if db_field.name == "Branch_ID":
print("db_field.name",db_field.name)
user = User.objects.get(username=request.user.username)
if not user.is_superuser:
print('user=',user)
branch = M_Branch.objects.get(HOD = user)
print('branch = ',branch)
'''if user=='E0711001':
kwargs["queryset"] = M_Branch.objects.filter(Branch_ID='B101')
#elif user=='E0711002':
else:
kwargs["queryset"] = M_Branch.objects.filter(Branch_ID='B102')'''
#kwargs["queryset"] = M_Branch.objects.filter(Branch_ID=user.branch.id)
kwargs["queryset"] = M_Branch.objects.filter(Branch_Name=branch)
return super(M_ClassAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
fields = ['Branch_ID','Academic_Year','Class_Name']
list_filter = ['Academic_Year','Class_Name']
search_fields = ['Branch_ID','Academic_Year','Class_Name']
list_display = ('Class_Name','Branch_ID','Academic_Year')
admin.site.register(M_Class,M_ClassAdmin)
你想在視圖或模型來實現這一
? – HassenPy
我正在使用django管理員添加類.....當我作爲計算機工程的HOD登錄。外鍵,分支,必須只顯示Computer Engg的一個選項,而不是所有分支......因爲HOD Comp Engg關注他自己的部門而不是所有部門...... GOT IT? –