我正在編寫一個Django應用程序,該應用程序使用現有的舊數據以及表和關系的重新映射。我得到了一個包含表之間主鍵-外鍵關系的表,但是在理解如何使其適應Django模型時遇到了麻煩。例如,表country_metrics定義為+-------------+---------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------------+---------------+------+-----+---------+-------+| ContractNum | varchar(10) | NO | | NULL | || fips | varchar(5) | NO | | NULL | || metric_id | int(10) | NO | | NULL | || time_id | int(10) | NO | | NULL | || value | decimal(12,3) | NO | | NULL | || eff_date | date | NO | | NULL | || exp_date | date | YES | | NULL | |+-------------+---------------+------+-----+---------+-------+而且我得到了一個關系映射ContractNum primary key, foreign key references table contractsfips primary key, foreign key references table countrymetric_id primary key, foreign key references table metricstime_id primary key, foreign key references table time它是在課堂上建模的class ContractCountyMetrics(models.Model): contractnum = models.CharField(max_length=10L, db_column='ContractNum', primary_key = true) # Field name made lowercase. fips = models.CharField(max_length=5L) metric_id = models.IntegerField() time_id = models.IntegerField() value = models.DecimalField(max_digits=14, decimal_places=3) eff_date = models.DateField() exp_date = models.DateField(null=True, blank=True) contractKey = models.ForeignKey(Contracts) fipsKey = models.ForeignKey(Counties) metricKey = models.ForeignKey(Metrics) timeKey = models.ForeignKey(Time) class Meta: db_table = 'txn_contract_county_metrics' unique_together("contractKey", "fipsKey", "metricKey", "timeKey")根據我的閱讀,unique_together基本上可以模擬組合鍵,并允許多個字段具有主鍵功能。我在正確的軌道上嗎?
2 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
根據我的閱讀,
unique_together
基本上可以模擬組合鍵,并允許多個字段具有主鍵功能。我在正確的軌道上嗎?
不完全的。它只是將復合添加UNIQUE KEY
到指定的字段,并且僅在創建表期間真正起作用,如果您使用Django訪問舊表,則該設置將不起作用。PRIMARY KEY
在Django中,仍然不支持Composites (請參見Bug#373)。
不幸的是,這可能意味著您不能將Django與具有復合表的舊表一起使用PRIMARY KEY
,而無需修改表以包含與Django兼容的PRIMARY KEY
,即單個唯一字段上的鍵。
添加回答
舉報
0/150
提交
取消