Python Django Пользователь-Админ Внешний ключ

У меня есть этот код в файле models.py

class WatchList(models.Model):
    title = models.CharField(max_length=50)
    storyline = models.CharField(max_length=200)
    platform = models.ForeignKey(StreamPlatform, on_delete=models.CASCADE, related_name="watchlist")
    active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
 
 
class Review(models.Model):
    review_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="review_user")
    watchlist = models.ForeignKey(WatchList, on_delete=models.CASCADE, related_name="watchlist")
    rating = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)])
    description = models.CharField(max_length=200, null=True)
    active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    update = models.DateTimeField(auto_now=True)

    def __str__(self):
        return str(self.rating)

и Serializer в файле Serializers.py

class ReviewSerializer(serializers.ModelSerializer):
    review_user = serializers.StringRelatedField(read_only=True)

    class Meta:
        model = Review
        exclude = ('watchlist',)

и запишите файл views.py следующим образом

class ReviewCreateAV(generics.CreateAPIView):
    serializer_class = ReviewSerializer
    queryset = Review.objects.all()

    def perform_create(self, serializer):
        pk = self.kwargs.get('pk')
        watchlist = WatchList.objects.get(pk=pk)
        review_user = self.request.user
        review_query = Review.objects.filter(watchlist=watchlist, review_user=review_user)
        if review_query.exists():
            raise ValidationError("You have reviewed this movie")

        serializer.save(watchlist=watchlist, review_user=review_user)

У меня вопрос, когда я использую foreign-key WatchList в классе Review если я не исключу 'watchlist' в файле serializers.py моя программа ответит: 400 Bad Request 'This field is required.' когда я публикую новый запрос (в теле запроса нет поля watchlist)

Но это противоположно для использования User-Admin ( django.contrib.auth.models ) для foreign-fey мне не нужно исключать это поле и моя программа все еще позволяет мне публиковать новый запрос.

Каждый может объяснить мне, почему это произошло? Или дать мне какое-то ключевое слово для поиска

Спасибо, что читаете

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