Django:OneToOneField()上的Queryset.clear()方法

时间:2010-01-29 18:03:01

标签: django django-models

我需要避免在外键上进行级联删除,但它是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)

2 个答案:

答案 0 :(得分:3)

在delete方法中将字段设置为None应该有效:

self.mysubmodel = None

答案 1 :(得分:0)

这里的预期行为是什么?我的意思是,o2o不允许空值?