Ограничение FOREIGN KEY не сработало (IntegrityError) при добавлении значения в поле ManyToManyField в Django

Тип исключения: IntegrityError Значение исключения:FOREIGN KEY constraint failed Местонахождение исключения: django/db/backends/base/base.py, строка 303, in _commit Поднято во время выполнения: django.contrib.admin.options.change_view

Вот мой класс модели

class ReviewModel(models.Model):
    title=models.CharField(max_length=100)
    description=models.CharField(max_length=200)
    reviewer=models.ForeignKey(UserModel,on_delete=models.SET_NULL,null=True,blank=True)

class ProductsModel(models.Model):
    uid=models.CharField(max_length=100,primary_key=True)
    name=models.CharField(max_length=100)
    description=models.CharField(max_length=200)
    category=models.ForeignKey(ProductCategoryModel,on_delete=models.CASCADE) 
    price=models.PositiveIntegerField()
    image1=models.ImageField(upload_to="images/products")
    seller=models.ForeignKey(UserModel,on_delete=models.CASCADE)
    reviews=models.ManyToManyField(ReviewModel,blank=False)

Вот мой сериализатор

class ReviewSerializer(serializers.ModelSerializer):
    class Meta:
        model=ReviewModel
        fields='__all__'


class ProductsSerializer(serializers.ModelSerializer):
    reviews = ReviewSerializer(many=True, read_only=True)
    class Meta:

        model = ProductsModel
        fields='__all__'
        depth=1

Вот мои взгляды

class ProductsListView(generics.ListCreateAPIView):
    queryset=ProductsModel.objects.all()
    serializer_class=ProductsSerializer

Я могу добавить значение и сохранить все поля, кроме отзывов, через панель администратора. Когда я оставляю его пустым, все идет хорошо, но при выборе любого значения для отзывов возникает эта ошибка.

Я добавил функцию create в сериализатор, но изменений не произошло

class ProductsSerializer(serializers.ModelSerializer):
    reviews = ReviewSerializer(many=True, read_only=True)
    class Meta:

        model = ProductsModel
        fields='__all__'

    def create(self, validated_data):
        reviews_data = validated_data.pop('reviews', [])  # Handle reviews separately
        product = ProductsModel.objects.create(**validated_data)

        # If you're also creating reviews when creating a product
        for review_data in reviews_data:
            review = ReviewModel.objects.create(**review_data)
            product.reviews.add(review)

        return product 

Ошибка была решена, когда я удалил файл базы данных (db.sqllite3) и папку migrations и мигрировал снова

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