Я хочу создать похожее на udemy веб-приложение и использовать инфраструктуру django rest для бэкенда и mysql в качестве базы данных.
у меня есть модель под названием «Уроки», которая содержит список всех уроков, а одно из полей - «видео-ссылка». Также у меня есть другое название модели Покупки, которые имеют два поля ForeignKey: Пользователи и Уроки. Я хочу показать Уроки всем пользователям, но для поля загрузки мне нужно найти пару (Пользователь, Урок) в Закупках, и если у него есть курс, я покажу ему поле загрузки.
My View Set
class LessonsViewSet(viewsets.ModelViewSet):
queryset = models.Assignments.objects.all()
authentication_classes = (TokenAuthentication,)
def get_serializer_class(self):
if self.request.user.is_staff :
print(self.request.user)
return serializers.FullAccessLessonsSerializer
elif self.request.user.is_active:
return serializers.PartialAccessLessonsSerializer
print(self.request.user)
return serializers.BasicAccessLessonsSerializer
Мои сериализаторы
Полный доступ для администраторов:
class FullAccessLessonsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Assignments
fields = ('id', 'title', 'description', 'dllink' )
Базовый доступ для неаутентифицированных пользователей:
class BasicAccessLessonsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Assignments
fields = ('id', 'title', 'description')
и частичный доступ для студентов:
class PartialAccessAssignmentsSerializer(serializers.ModelSerializer):
"""A serializer for all Lessons"""
def __init__(self, *args, **kwargs):
fields = kwargs.pop('fields', None)
super(PartialAccessAssignmentsSerializer, self).__init__(*args,**kwargs)
print(self.fields.get('id'))
self.fields.pop('dllink')
class Meta:
model = models.Assignments
fields = ('id','title','description','dllink' )
Я сделал все, что мог найти, но не могу понять. Я либо получаю ошибку, либо удаляю все ссылки dl.