Django IntegrityError: ограничение NOT NULL не выполненоPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Django IntegrityError: ограничение NOT NULL не выполнено

Сообщение Anonymous »

Я хочу создать сериализаторы моделей и весь необходимый код. Я хочу выполнить оценку проекта Coursera по курсу API.

Error: django.db.utils.IntegrityError: NOT NULL constraint failed: LittleLemonAPI_menuitem.category_id

Это происходит, когда я определяю глубину = 1 в MenuItemSerializer и создаю новый пункт меню. Если я удалю глубину = 1 и категорию = CategorySerializer, ошибки не возникнет. Но тогда таблица Категория не заполняется.
serializers.py
from rest_framework import serializers, validators
from .models import Category, MenuItem, Cart, Order, OrderItem
from django.contrib.auth.models import User, Group, Permission

class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ['id', 'slug', 'title']

validators = [
validators.UniqueTogetherValidator(
queryset=Category.objects.all(),
fields=('title',),
message="Category must be unique"
)
]

class MenuItemSerializer(serializers.ModelSerializer):
class Meta:
model = MenuItem
category = CategorySerializer()
fields = ['id', 'title', 'price',
'featured', 'inventory', 'category',]
depth = 1

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email', 'groups',]
depth = 1

class CartSerializer(serializers.ModelSerializer):
class Meta:
model = Cart
user = UserSerializer()
menuitem = MenuItemSerializer()
fields = ['id', 'user', 'menuitem', 'quantity', 'unit_price', 'price']
depth = 1
validators = [
validators.UniqueTogetherValidator(
queryset=MenuItem.objects.all(),
fields=('id',),
message="Menuitem should be unique in this curt"
),
validators.UniqueTogetherValidator(
queryset=User.objects.all(), fields=('id'), message="User should be unique")
]

class OrderSerilizer(serializers.ModelSerializer):
class Meta:
model = Order
fields = ['id', 'user', 'delivery_crew', 'status', 'total', 'date']
depth = 1

class OrderItemSerializer(serializers.ModelSerializer):
class Meta:
model = OrderItem
fields = ['id', 'order', 'menuitem', 'quantity', 'unit_price', 'price']
depth = 1
validators = [
validators.UniqueTogetherValidator(
queryset=Order.objects.all(),
fields=('id',)
),
validators.UniqueTogetherValidator(
queryset=MenuItem.objects.all(),
fields=('id',)
)
]

models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Category(models.Model):
slug = models.SlugField()
title = models.CharField(max_length=255, db_index=True)

class MenuItem(models.Model):
title = models.CharField(max_length=255, db_index=True)
price = models.DecimalField(max_digits=6, decimal_places=2, db_index=True)
featured = models.BooleanField(db_index=True)
category = models.ForeignKey(Category, on_delete=models.PROTECT)
inventory = models.IntegerField()

class Cart(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
menuitem = models.ForeignKey(MenuItem, on_delete=models.CASCADE)
quantity = models.SmallIntegerField(),
unit_price = models.DecimalField(max_digits=6, decimal_places=2)
price = models.DecimalField(max_digits=6, decimal_places=2)

class Meta:
unique_together = ('menuitem', 'user')

class Order(models.Model):
user = models.ForeignKey(User, models.CASCADE)
delivery_crew = models.ForeignKey(
User, on_delete=models.SET_NULL, related_name='delivery_crew', null=True)
status = models.BooleanField(db_index=True, default=0)
total = models.DecimalField(max_digits=6, decimal_places=2)
date = models.DateField(db_index=True)

class OrderItem(models.Model):
order = models.ForeignKey(User, on_delete=models.CASCADE)
menuitem = models.ForeignKey(MenuItem, on_delete=models.CASCADE)
quantity = models.SmallIntegerField()
unit_price = models.DecimalField(max_digits=6, decimal_places=2)
price = models.DecimalField(max_digits=6, decimal_places=2)

class Meta:
unique_together = ('order', 'menuitem')


Подробнее здесь: https://stackoverflow.com/questions/791 ... int-failed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Django.db.utils.IntegrityError: ограничение NOT NULL не выполнено: account_account.phone_number
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Django.db.utils.IntegrityError: ограничение NOT NULL не выполнено: account_account.phone_number
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Django.db.utils.IntegrityError: ограничение NOT NULL не выполнено: account_account.phone_number
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Django.db.utils.IntegrityError: ограничение NOT NULL не выполнено: account_account.phone_number
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Django.db.utils.IntegrityError: ограничение NOT NULL не выполнено: account_account.phone_number
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»