Ограничение 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 и мигрировал снова