亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django模型和主外鍵關系

Django模型和主外鍵關系

鳳凰求蠱 2021-03-12 15:08:23
我正在編寫一個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,即單個唯一字段上的鍵。


查看完整回答
反對 回復 2021-03-29
  • 2 回答
  • 0 關注
  • 251 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號