Python Django - 访问foreignkey数据

时间:2013-12-23 22:50:39

标签: python django django-models django-templates django-views

我试图弄清楚如何从我的模型中获取具有ForeignKey关系的数据。我有以下models.py:

class wine(models.Model):
    name = models.CharField(max_length=256)
    year = models.CharField(max_length=4)
    description = models.TextField()

class collection(models.Model):
    name = models.CharField(max_length=50)
    description = models.TextField(null=True)

class collection_detail(models.Model):
    collection = models.ForeignKey(collection)
    wine = models.ForeignKey(wine)
    quantity = models.IntegerField()
    price_paid = models.DecimalField(max_digits=5, decimal_places=2)
    value = models.DecimalField(max_digits=5, decimal_places=2)
    bottle_size = models.ForeignKey(bottle_size)

Wine是一个基本表,Collection Detail是一个引用wine并将用户特定数据(如付费价格)添加到其中的表。 Collection是一组collection_detail对象。

我正在努力研究如何在这些模型中访问数据。我可以轻松地显示特定模型的数据,但在查看特定集合时,我无法访问collection_detail.wine.name数据。我是否需要编写特定的查询才能执行此操作?我可以从模板语言中访问这些数据吗?通过管理员查看时,我的数据模型显示正确,我可以添加我需要的数据和关系。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用collection_detail_set获取collection_detail所有collection的查询集。

如果你想要一对一的关系而不是一对一的关系(这是你使用ForeignKey得到的),那就改变

collection = models.ForeignKey(collection)

collection = models.OneToOneField(collection)

并只需从collection模型中调用collection_detail即可访问collection_detail的{​​{1}}。