Да, вы можете запросить, например, с помощью:
from django.db.models import F
orders = Order.objects.annotate(
product_name=F('product__name'),
product_price=F('product_price')
)
Объекты Order
, которые возникают из этого набора запросов, будут иметь два дополнительных атрибута .product_name
и .product_price
который содержит name
и price
связанных Product
.
В самом объекте Order
вы можете просто использовать self.product.name
. Вы уже делаете это, например, в методе __str__
. Например, вы можете получить name
и price
соответствующего product
с помощью:
class Order(models.Model):
STATUS = (
('Work Under Progress', 'Work Under Progress'),
('Delivered', 'Delivered'),
)
product = models.ForeignKey(Product, null=True, on_delete=models.SET_NULL)
date_created = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=200, null=True,
choices=STATUS)
def __str__(self):
if self.product_id is not None:
return '{}: {}'.format(self.<b>product.name</b>, self<b>.product.price</b>)
else:
return 'no_product'