如何为 Django 中的特定用户授予模型对象的访问权限

How to give access for a model object to a specific user in Django

我正在 Django 中做一个在线 classroom 项目,我在其中创建了一个名为 create_course 的模型,教师可以访问该模型。现在我正在尝试将其设计为创建 class 的老师,只有他在登录后才能看到这个,另一位老师不应该看到他的 classes 以及如何将学生添加到那个特定的 class 我创造了

课程模型

class course(models.Model):
    course_name = models.CharField(max_length=200)
    course_id = models.CharField(max_length=10)
    course_sec = models.IntegerField()
    classroom_id = models.CharField(max_length=50,unique=True)

views.py

def teacher_view(request, *args, **kwargs):
    form = add_course(request.POST or None)
    context = {}
    if form.is_valid():
        form.save()
        return HttpResponse("Class Created Sucessfully")
    context['add_courses'] = form
    return render(request, 'teacherview.html', context)

forms.py

from django import forms
from .models import course

class add_course(forms.ModelForm):
    class Meta:
        model = course
        fields = ('course_name', 'course_id', 'course_sec', 'classroom_id')

在课程模型中增加一个与用户模型建立关系的字段。从而可以得到创建课程的老师的详细信息。

    from django.contrib.auth.models import User

    class course(models.Model):
        course_name = models.CharField(max_length=200)
        course_id = models.CharField(max_length=10)
        course_sec = models.IntegerField()
        classroom_id = models.CharField(max_length=50,unique=True)
        created_by = models.ForeignKey(User, on_delete=models.CASCADE)

在您的视图函数中,您可以检查登录用户是否与请求课程的创建用户相同。

    def teacher_view(request, *args, **kwargs):
        # since this is course specific view, you will be passing an identiier or pk of the course as an argument to this function.
        course_obj = Course.objects.get(id="identifier")
        if request.user == course_obj.created_by:
            # logged in user is same as the creator of the course
        else:
            # redirect

我更愿意创建权限并在特定模型中拥有这些权限。您也可以尝试一下。如果它不起作用,请告诉我。