Модельные отношения и запросы в Django не совсем понятны

что означают эти строки кода в Django View: я не смог найти подробного объяснения, я пришел в Django из Laravel, поэтому я могу понять модели и отношения... спасибо

customer = request.user.customer
product = Product.objects.get(id=productId)
order, created = Order.objects.get_or_create(customer=customer, complete=False)
orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)
customer = request.user.customer

Объект запроса имеет пользователя, пользователь - это аутентифицированный пользователь (если пользователь не аутентифицирован, то вместо него возвращается объект AnonymousUser). В этом примере модель User (т.е. таблица пользователей) имеет поле под названием customer, и мы обращаемся к этому полю.

product = Product.objects.get(id=productId)

Здесь мы просто запрашиваем таблицу Product для конкретного продукта с заданным productId. Обратите внимание, Django выдаст ошибку, если при использовании метода .get() будут возвращены две записи (т.е. если две строки в таблице Product имеют одинаковые productId.

).
order, created = Order.objects.get_or_create(customer=customer, complete=False)

Далее мы используем метод get_or_create() для поиска order на основе customer (значение которого мы извлекли выше. If an order cannot be found we will create one instead. The value of createdwill be True if a neworder` был создан или False, если он уже существовал.

orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)

Как и выше, мы получаем или создаем OrderItem, используя поля order и product.

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