Django ORM与非唯一字段的关系

时间:2013-09-24 12:25:17

标签: django orm

我有客户的静态信息

class Customer(models.Model):
    name = models.CharField(max_length=256)

和手机状态的DWH样式表,包含每日数据:

class Phone(models.Model):
    imei = models.CharField(max_length=64)
    day = models.DateField()
    param1 = models.INtegerField()
    param2 = models.INtegerField()

我的问题是,我可以创建某种“自动”关系,例如foreinKey ManytoMany 客户和使用手机IMEI的每日电话记录之间,因为我收集的记录不了解客户,我想通过添加某种第三种方式,通过IMEI将客户连接到所有电话记录表格如

class CutomerIMEI(models.Model):
    customer = models.ForeignKey(Site)
    imei = models.CharField(max_length=64)

所以我可以做phone.customer和customer.phones.filter(day ='some day')

谢谢, 吉文

2 个答案:

答案 0 :(得分:1)

我认为你几乎就在那里,除了我将imei上的CustomerIMEI字段定义为实际的ForeignKey - 你可以在目标表中指定要链接的字段,如下所示:

imei = models.ForeignKey(Phone, to_field='imei')

现在,您可以将CustomerIMEI用作来自客户的多对多关系的through字段:

phones = models.ManyToManyField(Phone, through=CustomerIMEI)

现在您建议的语法customer.phones.filter(day='some day')将起作用。

答案 1 :(得分:0)

你不是在寻找Many-to-Many extra fields吗?