这是一个简单的交叉参考表Django

时间:2015-08-28 20:53:39

标签: django python-2.7 django-models

我是django的新手,并不擅长构建模型。我想看看为我的项目设置交叉引用表的最佳方法。

在我的场景中,我希望允许用户根据制造商部件号或经销商部件号搜索部件。

一个特定的制造商部件号可以与许多经销商部件号相关联,但每个经销商部件号只能与一个制造商部件号相关联。

因此,例如,Manuacturer A制作一个小部件并将其称为w12345。转销商A将此小部件称为aw12345,转销商B将其称为bw12345,转销商C将其称为widgetxyz。如果用户搜索这些选项中的任何一个,他们将被带到正确的部分,w12345将其所有信息,如价格,数量,图片等。

我在下面设置我的模型,这是正确的方法吗?或者我需要更多型号?

class Parts(models.Model):
    sup_name = models.CharField(max_length=50)
    mfr_part = models.CharField(max_length=30)
    sup_part = models.CharField(max_length=30)
    part_desc = models.CharField(max_length=200)
    part_price = models.FloatField(max_length=6)
    part_qty = models.IntegerField(max_length=6)
    part_img = models.ImageField(upload_to=None, height_field=None,     width_field=None, max_length=100)
    url = models.URLField()
    partxref = models.ForeignKey('PartXRef')

def __unicode__(self):
    return self.sup_name

class PartXRef(models.Model):
    supplier = models.CharField(max_length=50)
    mfr_part_number = models.CharField(max_length=30)
    sup_part_number = models.CharField(max_length=30)

def __unicode__(self):
    return self.supplier

1 个答案:

答案 0 :(得分:0)

这里有一些问题。主要问题是ForeignKey是错误的方式:每个Part有很多可能的PartXRef,所以FK应该依赖前者指向后者。

另一个问题是数据库设计的一个基本原则,称为规范化,你永远不应该重复数据;应该有一个规范的地方,每个数据都存在。在这种情况下,制造商编号应仅存在于零件中,供应商的名称及其分配给它的编号应仅存在于PartXRef中。