3
我有一個模型如下。Django模型unique_together主鍵和唯一約束
class mc(models.Model):
ap=models.CharField(max_length=50,primary_key=True)
de=models.CharField(max_length=50)
STATUS=models.CharField(max_length=12,default='Y')
class Meta:
unique_together=(("ap","de"),)
db_table='mc'
我對錶mc寫了ap ='1',de ='2'。
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 2 | Y |
+----+----+--------+
然後我試着寫ap ='1'和de ='3',但它只是覆蓋了前一個。現在這張表包含了
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 3 | Y |
+----+----+--------+
然後我試着寫ap ='2',de ='3'及其工作。因爲我已經賦予unique_together,ap和de的組合不起作用。
但是unique_together的工作,如果我沒有使用'primary_key'或'唯一'約束ap或de。
你能幫我嗎?如何在主鍵上使用unique_together?
實際的問題是,我有另一個類mc1使用外鍵的字段ap。
class mc1(models.Model):
test=models.ForeignKey(mc,on_delete=models.CASCADE,to_field='ap')
因此,mc.ap應該是唯一的以定義一個外鍵。
是的,我也嘗試過。但我有另一個班級的孩子,因爲我有一個外鍵給ap。當我遷移它時會發出一些錯誤,說「ap應該是唯一的」。 –
我該如何解決這個問題?任何通過使用信號解決這個問題的方法? –
您可以將外鍵用於實際的主鍵,或者有兩個整數字段來存儲'ap'和'de'值(但在這種情況下,您將失去約束檢查)。我看不出信號如何幫助你。 – Alasdair