Django Rest Framework имеет статус 500, но все равно создает экземпляр (ограничение not-null)
У меня очень странная ошибка, которую я не могу отладить уже несколько часов. Я продолжаю получать ошибку на мой пост запрос создания экземпляра понравившегося товара в базе данных.
django.db.utils.IntegrityError: null value in column "product_id" of relation "ecommerce_like" violates not-null constraint
DETAIL: Failing row contains (31, null, null).
Странно то, что он создает этот экземпляр и прекрасно работает, но выдает статус.500, и я понятия не имею, как его удалить.
Итак, у меня есть такая модель:
class Like(models.Model):
product = models.ForeignKey('ProductInStore', on_delete=models.PROTECT)
user = models.ForeignKey('users.CustomUser', on_delete=models.PROTECT)
class Meta:
unique_together = ('product', 'user',)
class ProductInStore(models.Model):
product = models.ForeignKey('Product', on_delete=models.CASCADE)
class Product(models.Model):
name = models.CharField(max_length=200)
А код для создания экземпляра Like выглядит так:
class LikeProductApi(generics.CreateAPIView):
queryset = Like.objects.all()
serializer_class = LikeSerializer
def create(self, request, *args, **kwargs):
product_id = self.kwargs['pk']
product = ProductInStore.objects.get(id=product_id)
if Like.objects.filter(user=self.request.user, product=product).exists():
raise ValidationError("This user already likes this product")
else:
Like.objects.create(user=self.request.user, product_id=product_id)
return super().create(request, *args, **kwargs)
class LikeSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
product = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = Like
fields = ('user', 'product',)
У вас есть идеи, что не так?