Я хочу вернуть отчеты, написанные автором, вошедшим в систему. Я определил пользовательскую модель пользователя через AbstractBaseUser
. Я хочу использовать RetrieveUpdateDestroyAPIView
, чтобы автор мог получать, а также редактировать и удалять отчеты.
Я определил эти модели: CustomUser
, используется как модель пользователя по умолчанию и для аутентификации. ReporterProfile
, пользователи должны заполнять эту модель, когда они продвигают себя как авторы. . Модель Report
хранит все отправленные отчеты. Поле reporterprofile
в модели Report
имеет отношение ForeignKey
с моделью ReporterProfile
, которая, в свою очередь, имеет отношение ForeignKey
с моделью CustomUser
.
Мои определения модели:
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
date_joined = models.DateTimeField(default=timezone.now)
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
class ReporterProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
dob = models.DateField(auto_now=False, blank=True, help_text="YYYY-MM-DD")
sex = models.CharField(max_length=22, choices=SEX_CHOICES)
avatar = models.ImageField(upload_to=user_directory_path)
Это мое мнение:
class MyReportsView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = ReportSerializer(request.user)
queryset = Report.objects.all() # need to get the currently logged in user
При этом я получаю сообщение об ошибке: NameError: name 'request' is not defined
.
Это мой сериализатор:
class ReportSerializer(serializers.ModelSerializer):
class Meta:
model = Report
fields = ('reporterprofile', 'slug', 'title', 'column', 'summary', 'body', 'created', 'modified', 'published',)
Как получить отчеты, отправленные текущим авторизованным пользователем?