【发布时间】:2021-09-17 18:23:01
【问题描述】:
假设我有两个模型,例如:
class Product:
product_name = models.CharField(max_length=40)
class ProductPrice(models.Model):
product = models.OneToOneField(Product, on_delete=models.CASCADE)
product_price = models.FloatField()
请不要打扰为什么有人可能需要两个不同的模型/表格来存储此类数据。这不是这里的重点。有趣的是,当我查询 Product 时,我将得到一个 python attr productprice 以及与该 Product 关联的对象 ONLY IF ProductPrice 存在.
为了更清楚,让我们创建一些虚拟数据:
product1 = Product.objects.create(product_name='first product')
product2 = Product.objects.create(product_name='second product')
product_price = ProductPrice.objects.create(product=product2, price=10.99)
现在试试这个
print(hasattr(product1`, "productprice")) # -> false
print(hasattr(product2`, "productprice")) # -> true
django 是如何知道数据库中存在ProductPrice 的?在 SQL 中,我不知道有任何方法可以在没有第二次查询的情况下检查它。我很好奇这是如何工作的。
【问题讨论】:
标签: python python-3.x django