如何在Django中将外键设置为<null>(没有on_delete = models.SET_NULL)

时间:2019-05-10 13:45:54

标签: django django-models

请问如何将外键设置为“ NULL”? 在以下示例中,我想重写delete方法,以便不删除图像,而是将其FK设置为​​“ NULL”,以便稍后恢复并与父对象重新连接。


def delete(self, using=None, keep_parents=False):        
    self.foreighnkey = None # foreighnkey  is the fk field's name
    self.save()

# https://stackoverflow.com/questions/4446652/django-how-to-set-a-field-to-null
# doesn't work this way

P.S。父对象将保持不变,因此不能使用其删除方法

1 个答案:

答案 0 :(得分:0)

在这种情况下,可以获取主模型实例,然后使用其相关的管理器调用

Primary_model_instance.secondarymodel_set.remove(self)

# or alternativelly
 self.foreighnkey.currentmodel_set.remove(self)