Мне нужно получить profile_id пользователя, который пытается создать обзор для хранения в модели. Я могу получить атрибуты для пользователя, поскольку они встроены в django, но когда я пытаюсь использовать то, что ниже, чтобы получить profile_id, я получаю ошибку «prof is notfined».
views.py
class ReviewCreateView(LoginRequiredMixin, CreateView):
model = Review
fields = ['rating', 'reviewtext']
def get_context_data(self, **kwargs):
context = super(ReviewCreateView, self).get_context_data(**kwargs)
context['prof'] = Profile.objects.values_list('id', flat=True).filter(user_id=self.request.user.id)
return context
def form_valid(self, form):
form.instance.product = self.request.GET.get('pk')
form.instance.author = self.request.user
form.instance.profile = prof
return super().form_valid(form)
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE)
class Review(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE)
rating = models.PositiveSmallIntegerField(default=1, validators = [MinValueValidator(1), MaxValueValidator(5)])
reviewtext = models.TextField()
class Product(models.Model):
name = models.CharField(max_length=100)