Django foreignkey和表一对多的关系

时间:2014-07-13 16:01:51

标签: python sql django

我是Django和python的新手,我一直在关注Django教程来构建个人项目。

到目前为止,我已经能够在没有重大问题的情况下做到这一点,但是当我需要多个表并需要与它们建立关系时,我们一直在创建models.py。

我有两个表:一个与产品清单相关,另一个与这些产品的平均价格相关

我基本上想要获取表2的记录并添加存储在表1中的平均价格,并且必须使用3个字段完成连接:模型,年份和大小。

当我只查询产品表(2)时,我将其作为

latest_products = Products.objects.all().order_by('-date_added')

如何从此查询中的平均价格表中获得每种产品的平均价格?

我已经在这里阅读了文档和许多帖子,但我的

仍然有这个混乱

表1(平均价格)

class Avg_price(models.Model):
  model = models.CharField(max_length=50, blank=True)
  size= models.IntegerField(blank=True, null=True)
  year= models.IntegerField(blank=True, null=True)
  price= models.IntegerField(blank=True, null=True)

表2(产品清单)

class Products(models.Model):
  product_id =models.IntegerField(blank=True, null=True)
  location = models.CharField(max_length=200, blank=True)
  date_added= models.DateTimeField(blank=True, null=True)
  status = models.CharField(max_length=50, blank=True)
  model = models.CharField(max_length=50, blank=True)
  size= models.IntegerField(blank=True, null=True)
  year= models.IntegerField(blank=True, null=True)
  price= models.IntegerField(blank=True, null=True)      
  avg_price=models.ForeignKey(Avg_price)

很抱歉,如果这些问题听起来很愚蠢......感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

拥有Products个实例后,您还拥有相关的Avg_price。看看这个:

>>> my_product = latest_products[0]
>>> print my_product.avg_price.year
"prints my_product's price's year"

或者,您可以使用.select_related queryset方法:

products_prices = Products.objects.all().select_realted('avg_price')

这会回答你的问题吗?