Создание должности по модели обзора

Мне нужна помощь в оставлении отзыва на другую модель в качестве пользователя, у меня были ошибки и я перепробовал много решений. ошибка

FieldError at /reviews/1
Cannot resolve keyword 'user' into field. Choices are: id, pet_owner, pet_owner_id, rating, review, sitter, sitter_id

Вот моя функция представления:

 

def post(self, request, pk):
     user = Review(pet_owner = request.user)
     sitter = get_object_or_404(Sitter, pk=pk)
     data = request.data
     review = Review.objects.create(
                pet_owner_id = user,
                sitter= sitter,
                rating=data['rating'],
                review=data['review'] 
            )
     return Response('Review Added', status=status.HTTP_400_BAD_REQUEST)

а это модели:

    class Review(models.Model):
      review = models.CharField(max_length=500)
      rating = models.DecimalField(max_digits=7, decimal_places=2)
      sitter = models.ForeignKey(Sitter,on_delete=models.CASCADE,null=True)
      pet_owner = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,null=True)
    
    class Sitter(models.Model):
        first_name = models.CharField(max_length=255, default='Jane')
        last_name = models.CharField(max_length=255, default='Doe')
        zipcode = models.CharField(max_length = 5, default='12345')
        supersitter = models.BooleanField(null=True, blank=True)
        price = models.DecimalField(max_digits=7, decimal_places=2)
        numReviews = models.IntegerField(null=True, blank=True, default=0)
        rating = models.DecimalField(max_digits=7, decimal_places=2, default=0)

это моя модель для обзора и модель-ситтер

   

     def post(self, request):
            """Create request"""
            print(request.data)
            # Add user to request data object
            # Serialize/create review
            review_user = request.user
            review_data = Review(pet_owner = review_user)
            review = ReviewSerializer(review_data, data=request.data)
            # If the review data is valid according to our serializer...
            if review.is_valid():
                # Save the created review & send a response
                r = review.save()
                return Response({ 'review': review.data }, status=status.HTTP_201_CREATED)
            # # If the data is not valid, return a response with the errors
            return Response(review.data, status=status.HTTP_400_BAD_REQUEST)

we also tried this

user должен быть простым объектом User, так:

def post(self, request, pk):
    sitter = get_object_or_404(Sitter, pk=pk)
    data = request.data
    review = Review.objects.create(
        pet_owner=request.user,
        sitter=sitter,
        rating=data['rating'],
        review=data['review'] 
    )
    return Response('Review Added', status=status.HTTP_400_BAD_REQUEST)

Вы можете немного оптимизировать метод, используя pk сразу:

def post(self, request, pk):
    review = Review.objects.create(
        pet_owner=request.user,
        sitter_id=pk,
        rating=data['rating'],
        review=data['review'] 
    )
    return Response('Review Added', status=status.HTTP_400_BAD_REQUEST)

но может быть лучше работать с сериализатором для правильной проверки и очистки данных запроса.

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