2016-08-20 87 views
1

我向我的應用程序添加了一個名爲SocialProfile的新模型,該模型負責保持與UserProfile模型具有一對一關係的用戶的社交相關屬性。這是在models.py的SocialProfile型號:django模型創建不起作用

class SocialProfile(models.Model): 
    profile = models.OneToOneField('UserProfile', on_delete=models.CASCADE) 
    facebook_profiles = models.ManyToManyField('FacebookContact', related_name='synced_profiles', blank=True) 
    google_profiles = models.ManyToManyField('GoogleContact', related_name='synced_profiles', blank=True) 
    hash = models.CharField(max_length=30, unique=True, blank=True) 

    def save(self, *args, **kwargs): 
     if not self.pk: 
      hash = gen_hash(self.id, 30) 
      while SocialProfile.objects.filter(hash=hash).exists(): 
       hash = gen_hash(self.id, 30) 
      self.hash = hash 

    def __str__(self): 
     return str(self.profile) 

現在,我保持一個記錄同步Facebook的谷歌&型材。現在,問題在於創建新對象實際上並沒有在數據庫中添加任何記錄。我無法使用腳本或管理員創建實例。在腳本的情況下,沒有錯誤以下運行,但不生成記錄:

for profile in UserProfile.objects.all(): 
    sp = SocialProfile.objects.create(profile=profile) 
    print(profile, sp) 

SocialProfile.objects.count() 

打印件完成,看起來是正確的和計數()返回0。我試圖創建在管理對象,但我得到的以下錯誤:

"{{socialprofile object}}" needs to have a value for field "socialprofile" before 
this many-to-many relationship can be used. 

我認爲這是一個問題,因爲如果我評論了許多一對多的關係,它完成,沒有錯誤(還沒有新的記錄)。我提到它,如果它可能有幫助。

我檢查了數據庫,表在那裏,沒有檢測到新的遷移。

任何有關可能是什麼問題的幫助和想法,將不勝感激!

+0

我甚至刪除了我的數據庫並創建了一個新的數據庫,仍然發生了同樣的情況。 – user24353

+0

你可以發佈你的用戶檔案模型嗎? –

回答

1

您已覆蓋保存方法,以便它實際上不會保存任何內容。你需要在最後調用超類方法:

def save(self, *args, **kwargs): 
    if not self.pk: 
     ... 
    return super(SocialProfile, self).save(*args, **kwargs) 
+0

謝謝,這樣的菜鳥錯誤! – user24353