是否可以使用外键从模型中选择某些特定字段。这是一个例子: 假设我有
class Product(models.Model):
CATEGORY = (
('A', 'A'),
('B', 'B'),
('C', 'C'),
)
name = models.CharField(max_length=200, null=True)
price = models.FloatField(null=True)
category = models.CharField(max_length=200, null=True, choices=CATEGORY)
description = models.CharField(max_length=200, null=True)
date_created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
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):
return self.product.name
目的是在Order类中获取产品名称和产品价格。 有什么办法吗? (我对Django非常陌生,可以在文档中找到它)
谢谢
答案 0 :(得分:1)
是的,您可以使用以下示例进行查询:
from django.db.models import F
orders = Order.objects.annotate(
product_name=F('product__name'),
product_price=F('product_price')
)
由 this 查询集产生的Order
对象将具有两个额外的属性.product_name
和.product_price
,其中包含name
和{与price
相关的{1}}。
在Product
对象本身中,您可以只使用Order
。您已经这样做了,例如在self.product.name
方法中。例如,您可以使用以下方法获取相关__str__
的{{1}}和name
:
price
答案 1 :(得分:0)