Как предоставить доступ к объекту модели определенному пользователю в Django

Я делаю проект онлайн класса на Django, где я создал модель под названием create_course, которая доступна учителям. Теперь я пытаюсь разработать модель так, чтобы учитель, который создает класс, мог видеть только его, после входа в систему другой учитель не должен видеть его классы и как добавить учеников в этот конкретный класс, который я создал

модель курса

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')

Добавьте еще одно поле в модель курса, которое устанавливает связь с моделью User. Таким образом, вы можете получить подробную информацию о преподавателе, который создал курс.

    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

Я бы предпочел создавать разрешения и располагать их в определенных моделях. Вы можете попробовать и с этим. Дайте мне знать, если это не сработает.

Вернуться на верх