Возникают проблемы с импортом модели в другое приложение, чтобы использовать ее там

Структура моего проекта:

Экомаркет:

  • экомаркет:
  • карточка:
  • продукт:
  • пользователь: 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, но не смог найти никаких решений.

Вернуться на верх