2011-10-10 83 views
1

我有兩個模型:UserProfile(從用戶擴展)和Cv。我創建了另外一個模型,它有兩個來自這些模型的外鍵。Django兩個外鍵

class cv(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    cv_d= models.TextField(max_length=1100) 
    ... 
class cvv(models.Model): 
    user = models.ForeignKey(User)  
    cv= models.ForeignKey(cv)  
    date = models.DateTimeField(auto_now=True) 

在我觀點,我想對CVV插入值:

... 
obj = cv.objects.get(pk=id,active=True) 
add=cvv(user=request.user, cv=obj)  
add.save() 

不過,我收到以下錯誤: (1452,「不能添加或更新一個孩子行:外鍵約束失敗

如何將這兩個外鍵插入我的型號?

+0

也許request.user在None? – akonsu

+0

Request.user有當前記錄的用戶 – Thomas

回答

2

歡迎來到你不應該使用MySQL的諸多原因之一。當你有一個MyISAM表和一個InnoDB表時,這通常會發生。由於myISAM不支持FK約束,所以當django在表之間創建一個FK時,所有地獄崩潰。

解決的辦法是創建InnoDB或MyISAM兩個表,不要混合它們。或者更好的刪除不是MySQL的壞RDMS。

+0

例如,PostgreSQL是一個很好的選擇。 – Jordan

+0

我不會成爲任何特定RDMS的粉絲。我個人喜歡並喜歡Postgres,但他們有很多優秀的RDMS。基本上「不是MySQL」是開始的好地方=) – John