FieldError in ForeignKey while saving object in Django model
This is my model definition with an abstract model and the food cart model
class BaseCartItems(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=100)
cart = models.ForeignKey(BaseCart, on_delete=models.CASCADE, related_name='cart_items')
item = models.ForeignKey(BaseServiceItem, on_delete=models.CASCADE, related_name='cart_items')
quantity = models.IntegerField(default=1)
price = models.FloatField(default=0)
ordered = models.BooleanField(default=False)
add_ons = models.JSONField(default=list, blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
def add_quantity(self, quantity):
self.quantity += quantity
self.save()
Class FoodCartItems(BaseCartItems):
cart = models.ForeignKey(FoodCart)
item = models.ForeignKey(FoodServiceItem)
I am trying to fetch an existing food cart item and then update its quantity by calling
cart_item.add_quantity(2)
This throws me an error with the following traceback:
Traceback (most recent call last):
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/nestafar/service/views/cart.py", line 52, in post
existing_cart_item.add_quantity(item['quantity'])
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/nestafar/service/models/cart.py", line 62, in add_quantity
self.save()
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/base.py", line 814, in save
self.save_base(
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/base.py", line 892, in save_base
post_save.send(
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 176, in send
return [
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/nestafar/service/subapps/food/signals.py", line 12, in food_service_item_post_save
food_cart = FoodCart.objects.filter(cart=instance.cart).first()
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/query.py", line 1436, in filter
return self._filter_or_exclude(False, args, kwargs)
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/query.py", line 1454, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, args, kwargs)
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/query.py", line 1461, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1545, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1576, in _add_q
child_clause, needed_inner = self.build_filter(
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1426, in build_filter
lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize)
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1236, in solve_lookup_type
_, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta())
File "/Users/shubhojyoti/Desktop/Nestafar/tech/code/platform/venv/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1724, in names_to_path
raise FieldError(
django.core.exceptions.FieldError: Cannot resolve keyword 'cart' into field. Choices are: charges, created_at, food_cart, food_cart_items, guest, guest_id, id, order_created_at, ordered_status, status, subtotal, taxes, total, updated_at
Please let me know what is going wrong
Tried tweaking the model to remove cart and item from the abstract model but the issue still persists.