2010-01-29 4 views
0
내가 계단식가 외래 키에 삭제되지 않도록해야하지만이 같은)을 OneToOneField (의

:하지만 내가 할 수있는 (장고 : Queryset.clear OneToOneField()() 메소드

class MyModel(models.Model): 
    def delete(self): 
     self.mysubmodel.clear() # Breaks because self.cartitem is not a QuerySet. 
     super(MyModel, self).delete() 

class MySubModel(models.Model): 
    mymodel = models.OneToOneField(MyModel) 

이 버전은 작동합니다 이 버전을 사용하지 마십시오) :

class MyModel(models.Model): 
    def delete(self): 
     self.mysubmodel_set.clear() # Works because self.mysubmodel_set is a QuerySet. 
     super(MyModel, self).delete() 

class MySubModel(models.Model): 
    mymodel = models.ForeignKey(MyModel) 

답변

3

삭제 방법 없음에 필드를 설정 작동합니다 :

self.mysubmodel = None 
+0

그리고 그것은 길 아래의 어떤 문제도 일으키지 않을 것이냐? – orokusaki

0

여기서 예상되는 동작은 무엇입니까? o2o는 null 값을 허용하지 않습니다.

+0

당신은 OneToOneField에서 진정한 = null을 사용할 수 없습니다()? – orokusaki

+0

동작은 항목을 기반으로하는 하위 항목을 만드는 것이지만 하위 항목에는 종속 항목이 있으므로 종속 항목이 삭제되지 않으면 삭제할 수 없으므로 하위 항목을 삭제할 수 없습니다. 항목이 간다. – orokusaki