Я изучаю курс по Django API, и в конце моего проекта мне нужно создать API для небольшого ресторана Little Lemon. Я загрузил исходный код этого же проекта и сейчас реализую его на своей стороне. В настоящее время я застрял на проблеме уже второй день, я пробовал было обратиться к ChatGPT, Stack Overflow, но там не было конкретного решения. Проблема заключается в том, что я не могу добавить пункт меню в базу данных, так как возникает ошибка:
IntegrityError at /api/menu-items NOT NULL constraint failed: LittleLemonAPI_menuitem.category_id
**Эта ошибка возникает, когда я пытаюсь добавить пункт меню с помощью Insomia. Но если я создаю тот же элемент с помощью суперпользователя, то он создаётся.
Это мой вид (View):**
class MenuItemListView(generics.ListCreateAPIView): queryset = MenuItem.objects.all()serializer_class = MenuItemSerializer def get_permissions(self): permission_classes = [IsAuthenticated] if self.request.method != 'GET': permission_classes = [IsAuthenticated, IsManager | IsAd
Это моя модель:
class MenuItem(models.Model): title = models.CharField(max_length=255) price = models.DecimalField(max_digits=10, decimal_places=2) featured = models.BooleanField(db_index=True) category = models.ForeignKey(Category, on_delete=models.PROTECT)class Meta: unique_together = [['title', 'category']] def __str__(self): return self.title
Это мой сериализатор (Serializer)
class MenuItemSerializer(serializers.ModelSerializer): def validate_category(self, value): try: Category.objects.get(pk=value) return value except Category.DoesNotExist: raise serializers.ValidationError('Invalid category ID.')class Meta: model = MenuItem fields = ['id', 'title', 'price', 'featured', 'category'] depth = 1
Это мой JSON-запрос:
{
"title": "Spring Rolls",
"price": "5.99",
"featured": true,
"category": 1
}
ПРИМЕЧАНИЕ: Я создал категорию с помощью API, но когда я пытаюсь создать пункт меню, возникает эта ошибка из-за ограничения внешнего ключа.
Я пробовал удалять миграцию, очищать данные и перезапускать процесс, но получал тот же результат.
Я также пытался обратиться к ChatGPT, но это не принесло конкретного решения.
Когда я пытаюсь создать пункт меню суперпользователем, он создаётся.
Но когда я пытаюсь создать пункт меню через API, мне выдает ошибку:
IntegrityError at /api/menu-items NOT NULL constraint failed: LittleLemonAPI_menuitem.category_id