2013-05-28 44 views
20

我有這樣一個模型:如何設置兩個字段主鍵爲我的模型在Django

class Hop(models.Model): 
    migration = models.ForeignKey('Migration') 
    host = models.ForeignKey(User, related_name='host_set') 

我想遷移和主機兩者一起成爲主鍵。

+1

可能的重複http://stackoverflow.com/questions/4871966/make-primary-key-with-2-fields-in-django –

回答

38

我會稍微有點不同。

我會用默認的主鍵(汽車領域),並使用元類屬性,unique_together

class Hop(models.Model): 
    migration = models.ForeignKey('Migration') 
    host = models.ForeignKey(User, related_name='host_set') 

    class Meta: 
     unique_together = (("migration", "host"),) 

它將充當「代孕」的主鍵列。

如果你真的想創建一個多列主鍵,看看this app

+0

如果我使用unique_together,這是否意味着我不必有一個字段設置爲主鍵? – connor

+2

如果你不指定'AutoField',django會爲你添加一個。總之,你沒有。 – karthikr

6

目前,Django模型僅支持單個列主鍵。如果您未在模型中爲字段指定primary_key = True,則Django將自動創建一列id作爲主鍵。

Meta中的屬性unique_together僅對您的數據有約束。

相關問題