Возникают проблемы с импортом модели в другое приложение, чтобы использовать ее там
Структура моего проекта:
Экомаркет:
- экомаркет:
- карточка:
- продукт:
- пользователь: manage.py
Вот product.models
class Product(models.Model):
title = models.CharField(verbose_name=_("Называние"), max_length=255)
description = models.TextField(verbose_name=_("Описание"), null=True, blank=True)
price = models.DecimalField(
verbose_name=_("Цена"), max_digits=9, decimal_places=2
)
quantity = models.PositiveIntegerField(verbose_name=_("Количество"), default=0)
category = models.ForeignKey(
"Category", verbose_name=_("Категория"), on_delete=models.PROTECT
)
А это cart.models
class Cart(models.Model):
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
total_price = models.DecimalField(max_digits=9, decimal_places=2, default=0)
def __str__(self):
return f"{self.user}'s cart"
class CartProduct(models.Model):
product = models.ForeignKey("product.Product", on_delete=models.CASCADE)
total_price = models.DecimalField(
decimal_places=2, max_digits=9, verbose_name=_("Общая цена")
)
cart = models.ForeignKey(Cart, on_delete=models.CASCADE, related_name="cart_products")
quantity = models.PositiveIntegerField(default=1, verbose_name=_("Количество"))
def __str__(self):
return self.product.title
Проблема в том, что когда я импортирую Product в верхней части файла, например from product.models import, django отказывается это понимать. В cart.models я импортировал модель Product в ForeignKey как строку, и это сработало. Но мне нужна модель Product в cart.views для создания запроса на получение конечной точки. Как же мне импортировать ее в cart.views?
Вот мой views.py
class AddToCartView(generics.UpdateAPIView):
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (JWTAuthentication,)
def update(self, request, *args, **kwargs):
quantity = request.data.get("quantity")
id = kwargs.get('id')
user = request.user
product = generics.get_object_or_404("product.Product", id=id)
cart, _ = Cart.objects.get_or_create(user=user)
cart_product = CartProduct.objects.filter(
product=product, cart=cart
)
if cart_product:
raise exceptions.NotAcceptable(
'You already have this product in your cart'
)
if quantity > product.quantity:
raise exceptions.NotAcceptable(
"Not enough product in stock!!! We'll restock it ASAP"
)
cart_product = CartProduct.objects.get_or_create(
product=product, quantity=quantity, cart=cart
)
total_price = product.price * quantity
cart.total_price += total_price
cart.save()
return response.Response(
{'message': 'You successfully added product into your cart'},
status=status.HTTP_201_CREATED
)
Заранее благодарю за все ответы
В процессе поиска я узнал, что это связано с новой версией Python, но не смог найти никаких решений.