2015-05-28 34 views
1

我在Django有這個模型,其中一個person與Django提供的user有相同的信息以及更多的信息。當我創建一個新的person它也需要創建一個新的user,這很好。但是當我刪除一個personuser仍然在我的數據庫上。我在這裏錯過了什麼?我想刪除user如何在刪除時執行CASCADE?

class Person(models.Model): 
    user = OneToOneField(User) 
    gender = CharField(max_length=1, choices=GenderChoices, blank=True, null=True) 
    birth_date = DateField(blank=True, null=True) 

    def __unicode__(self): 
     return self.user.username 
+0

SQL'CASCADE'指令的作用是什麼?我在這裏發現了一些關於它在Django中的用法的相關文檔:https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.ForeignKey.on_delete – SebasSBM

回答

0

嘗試override the delete method型號(代碼未測試):

class Person(models.Model): 
    user = OneToOneField(User) 
    gender = CharField(max_length=1, choices=GenderChoices, blank=True, null=True) 
    birth_date = DateField(blank=True, null=True) 

    def __unicode__(self): 
     return self.user.username 

    def delete(): 
     theuser = User.objects.get(id=user) 
     theuser.delete() 

我發現關於在Django here CASCADE使用的一些相關文件。

+0

謝謝你的回答Sebas,但我認爲如果我重寫刪除方法,我可能會發現批量操作的一些問題:http://stackoverflow.com/a/16621653/523168 –

+0

也許你可以使用'pre_delete'和'post_delete'信號來創建正確處理這個問題的事件......我還沒有玩過信號。 – SebasSBM

相關問題