Python 在django管理的模型中,有没有一种方法可以让用户只查看与他相关的对象?
我是django的新手,我正在尝试完全在django管理层内部制作一个学校web应用程序 我试图做的事情是为学生设置一个权限,使他们能够只查看其Python 在django管理的模型中,有没有一种方法可以让用户只查看与他相关的对象?,python,django,django-permissions,Python,Django,Django Permissions,我是django的新手,我正在尝试完全在django管理层内部制作一个学校web应用程序 我试图做的事情是为学生设置一个权限,使他们能够只查看其学生字段与学生用户相同的分数 这是我的学生模型: class Student(models.Model): student_name = models.CharField(max_length=12) student_last_name = models.CharField(max_length=12,null=True) stu
学生
字段与学生用户相同的分数
这是我的学生模型:
class Student(models.Model):
student_name = models.CharField(max_length=12)
student_last_name = models.CharField(max_length=12,null=True)
student_age = models.PositiveSmallIntegerField(null=True)
student_class = models.ForeignKey(Clas,on_delete=models.SET_NULL,null=True)
student_idnum = models.CharField(max_length=15,null=True)
user = models.OneToOneField(User,on_delete=models.SET_NULL,null=True)
pub_date = models.DateTimeField("date published")
def __str__(self):
return self.student_name
这是我的学生评分模型:
class Score(models.Model):
exam = models.ForeignKey(Exam,on_delete=models.SET_NULL,null=True)
student = models.ForeignKey(Student, on_delete=models.CASCADE,null=True)
score = models.FloatField(null=True)
def __str__(self):
return str(self.score)
我已经看到了Meta
模型,我应该将其用于自定义权限,但我真的不知道该怎么做。有一个示例可以满足您的要求
ModelAdmin上的get_queryset方法返回可由管理站点编辑的所有模型实例的queryset。覆盖此方法的一个用例是显示登录用户拥有的对象
来自django.contrib导入管理
类MyModelAdmin(admin.ModelAdmin):
def get_queryset(自我,请求):
qs=super().get_queryset(请求)
如果request.user.is_超级用户:
返回qs
返回qs.filter(author=request.user)
admin.site.register(MyModel,MyModelAdmin)
您可以根据需要更改查询集