Hi,
I am facing the following TypeError
, when running the server:
Internal Server Error: /api/orders/add/
Traceback (most recent call last):
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\views\generic\base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
raise exc
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\decorators.py", line 50, in handler
return func(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\backend\base\views\order_views.py", line 30, in addOrderItems
order = Order.objects.create(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\query.py", line 514, in create
obj.save(force_insert=True, using=self.db)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 806, in save
self.save_base(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 857, in save_base
updated = self._save_table(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 1000, in _save_table
results = self._do_insert(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 1041, in _do_insert
return manager._insert(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\query.py", line 1434, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1620, in execute_sql
for sql, params in self.as_sql():
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1547, in as_sql
value_rows = [
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1548, in <listcomp>
[
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1549, in <listcomp>
self.prepare_value(field, self.pre_save_val(field, obj))
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1487, in prepare_value
value = field.get_db_prep_save(value, connection=self.connection)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields\__init__.py", line 910, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields\__init__.py", line 1546, in get_db_prep_value
value = self.get_prep_value(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields\__init__.py", line 1524, in get_prep_value
value = super().get_prep_value(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields\__init__.py", line 1403, in get_prep_value
return self.to_python(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields\__init__.py", line 1485, in to_python
parsed = parse_datetime(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\utils\dateparse.py", line 114, in parse_datetime
return datetime.datetime.fromisoformat(value)
*Models.py
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
paymentMethod = models.CharField(max_length=200, null=True, blank=True)
taxPrice = models.DecimalField(
max_digits=7, decimal_places=2, null=True, blank=True)
shippingPrice = models.DecimalField(
max_digits=7, decimal_places=2, null=True, blank=True)
totalPrice = models.DecimalField(
max_digits=7, decimal_places=2, null=True, blank=True)
isPaid = models.DateTimeField(auto_now_add=False, default=False)
paidAt = models.DateTimeField(auto_now_add=False, null=True, blank=True)
isDelivered = models.BooleanField(default=False)
deliveredAt = models.DateTimeField(
auto_now_add=False, null=True, blank=True)
createdAt = models.DateTimeField(auto_now_add=True)
_id = models.AutoField(primary_key=True, editable=False)
def __str__(self):
return str(self.createdAt)
Serializer.py
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def addOrderItems(request):
user = request.user
data = request.data
orderItems = data['orderItems']
if orderItems and len(orderItems) == 0:
return Response({'detail': 'No Order Item'}, status=status.HTTP_400_BAD_REQUEST)
else:
# Create order
order = Order.objects.create(
user=user,
paymentMethod=data['paymentMethod'],
taxPrice=data['taxPrice'],
shippingPrice=data['shippingPrice'],
totalPrice=data['totalPrice'],
)
# Create Shipping Address
shipping = ShippingAddress.objects.create(
order=order,
address=data['ShippingAddress']['address'],
city=data['ShippingAddress']['city'],
postalCode=data['ShippingAddress']['postalCode'],
country=data['ShippingAddress']['country'],
)
# Create Order items and set order to orderItem relationship
for i in orderItems:
product = Product.objects.get(_id=i['product'])
item = OrderItem.objects.create(
product=product,
order=order,
name=product.name,
qty=i['qty'],
price=i['price'],
image=product.image.url,
)
# Update stock
product.countInStock -= item.qty
product.save()
serializer = OrderSerializer(order, many=False)
return Response(serializer.data)
*Order_views.py
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def addOrderItems(request):
user = request.user
data = request.data
orderItems = data['orderItems']
if orderItems and len(orderItems) == 0:
return Response({'detail': 'No Order Item'}, status=status.HTTP_400_BAD_REQUEST)
else:
# Create order
order = Order.objects.create(
user=user,
paymentMethod=data['paymentMethod'],
taxPrice=data['taxPrice'],
shippingPrice=data['shippingPrice'],
totalPrice=data['totalPrice'],
)
# Create Shipping Address
shipping = ShippingAddress.objects.create(
order=order,
address=data['ShippingAddress']['address'],
city=data['ShippingAddress']['city'],
postalCode=data['ShippingAddress']['postalCode'],
country=data['ShippingAddress']['country'],
)
# Create Order items and set order to orderItem relationship
for i in orderItems:
product = Product.objects.get(_id=i['product'])
item = OrderItem.objects.create(
product=product,
order=order,
name=product.name,
qty=i['qty'],
price=i['price'],
image=product.image.url,
)
# Update stock
product.countInStock -= item.qty
product.save()
serializer = OrderSerializer(order, many=False)
return Response(serializer.data)
Settings.py
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True`