ForeignKey如何在这个Django示例中工作?

时间:2014-10-03 21:30:04

标签: django-models django-views

我无法理解如何使用ForeignKey以及它究竟是做什么的。它链接两个表吗?或者它是否链接每个表之间的特定列?这是一个非常基本的例子:

class Seller(models.Model):
    name = models.CharField()
    email = models.CharField()
    zipcode = models.CharField()

class ItemsForSale(models.Model):
    item = models.CharField()
    description = models.CharField()
    zipcode = models.ForeignKey(Seller)

我想要做的是当有人填写表格来销售商品时,我希望该商品的邮政编码自动设置为卖家邮政编码(因此最终用户甚至不必填写表格中的邮政编码)。

为什么ForeignKey(卖方)而不是ForeignKey(Seller.zipcode)?我想我不明白我是否连接整个'卖方'表?或者只是zipcode列?

由于我不明白ForeignKey的工作原理,我不知道如何编写一个为ItemsForSale设置zipcode的视图方法。所以我真的认为帮助我理解这一切的关键是看到一个正确的视图方法,将ItemForSale的邮政编码设置为卖家的邮政编码。

1 个答案:

答案 0 :(得分:0)

在Django中,ForeignKey是对象之间的关系。

在数据库中,ForeignKey是表中的一个字段(列),链接到另一个表的一行。

访问django docswikipedia,了解有关ForeignKeys的更多信息。

现在来到您的Django示例:

每一件商品(ItemsForSale)都有卖家。 (注意:模型名称应始终为单数。)

因此,我们在您的ForeignKey模型中添加ItemsForSale与项目卖家相关的模型:

class ItemsForSale(models.Model):
    ...
    seller = models.ForeignKey(Seller)

现在您可以通过这种方式访问​​该商品的卖家(当然还有他的所有属性(包括他的邮政编码):

ItemsForSale.get(item='Foo').seller.zipcode